2017-12-25 23:49:48 +00:00
|
|
|
#ifndef EQUIPMENT_HPP_INCLUDED
|
|
|
|
#define EQUIPMENT_HPP_INCLUDED
|
|
|
|
|
2018-06-28 02:22:43 +00:00
|
|
|
#include "../../../Game/Interactable/Item.hpp"
|
2017-12-25 23:49:48 +00:00
|
|
|
#include <cstdint>
|
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
2018-06-28 02:22:43 +00:00
|
|
|
#include <functional>
|
2017-12-25 23:49:48 +00:00
|
|
|
|
|
|
|
/** @addtogroup GameTabs
|
|
|
|
* @{ */
|
2018-12-27 18:17:09 +00:00
|
|
|
namespace Equipment
|
2017-12-25 23:49:48 +00:00
|
|
|
{
|
2018-12-27 18:17:09 +00:00
|
|
|
typedef enum SLOT
|
|
|
|
{
|
|
|
|
HEAD,
|
|
|
|
CAPE,
|
|
|
|
NECK,
|
|
|
|
WEAPON,
|
|
|
|
BODY,
|
|
|
|
SHIELD,
|
|
|
|
LEGS,
|
|
|
|
HANDS,
|
|
|
|
FEET,
|
|
|
|
RING,
|
|
|
|
AMMO
|
|
|
|
} SLOT;
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
bool IsOpen();
|
|
|
|
bool Open();
|
|
|
|
bool IsEmpty();
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
std::vector<int32_t> GetItemIDs();
|
|
|
|
std::vector<std::string> GetItemNames();
|
|
|
|
std::vector<std::int32_t> GetItemAmounts();
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
std::vector<Interactable::Item> GetItems();
|
|
|
|
std::vector<Interactable::Item> GetItems(std::int32_t ID);
|
|
|
|
std::vector<Interactable::Item> GetItems(const std::string& Name);
|
|
|
|
std::vector<Interactable::Item> GetItems(const std::vector<SLOT>& Slots);
|
|
|
|
std::vector<Interactable::Item> GetItems(const std::vector<std::int32_t>& IDs);
|
|
|
|
std::vector<Interactable::Item> GetItems(const std::vector<std::string>& Names);
|
|
|
|
std::vector<Interactable::Item> GetItems(const std::function<bool (const Interactable::Item&)>& Filter);
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
Interactable::Item GetItem(SLOT Slot);
|
|
|
|
Interactable::Item GetItem(std::int32_t ID);
|
|
|
|
Interactable::Item GetItem(const std::string& Name);
|
|
|
|
Interactable::Item GetItem(const std::vector<std::int32_t>& IDs);
|
|
|
|
Interactable::Item GetItem(const std::vector<std::string>& Names);
|
|
|
|
Interactable::Item GetItem(const std::function<bool (const Interactable::Item&)>& Filter);
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
std::int32_t Count(SLOT Slot);
|
|
|
|
std::int32_t Count(std::int32_t ID);
|
|
|
|
std::int32_t Count(const std::string& Name);
|
|
|
|
std::int32_t Count(const Interactable::Item& Item);
|
|
|
|
std::int32_t Count(const std::vector<std::int32_t>& IDs);
|
|
|
|
std::int32_t Count(const std::vector<std::string>& Names);
|
|
|
|
std::int32_t Count(const std::vector<Interactable::Item>& Items);
|
2018-06-28 02:22:43 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
SLOT GetSlotOf(std::int32_t ID);
|
|
|
|
SLOT GetSlotOf(const std::string& Name);
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
bool Contains(std::int32_t ID);
|
|
|
|
bool Contains(const std::string& Name);
|
|
|
|
bool Contains(const Interactable::Item& Item);
|
|
|
|
bool Contains(const std::vector<std::int32_t>& IDs); // true if all items are found at least once
|
|
|
|
bool Contains(const std::vector<std::string>& Names); // true if all items are found at least once
|
|
|
|
bool Contains(const std::vector<Interactable::Item>& Items);
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
bool ContainsAny(const std::vector<std::int32_t>& IDs);
|
|
|
|
bool ContainsAny(const std::vector<std::string>& Names);
|
|
|
|
bool ContainsAny(const std::vector<Interactable::Item>& Items);
|
2018-01-18 02:45:28 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
bool ContainsOnly(std::int32_t ID);
|
|
|
|
bool ContainsOnly(const std::string& Name);
|
|
|
|
bool ContainsOnly(const Interactable::Item& Item);
|
|
|
|
bool ContainsOnly(const std::vector<std::int32_t>& IDs);
|
|
|
|
bool ContainsOnly(const std::vector<std::string>& Names);
|
|
|
|
bool ContainsOnly(const std::vector<Interactable::Item>& Items);
|
2017-12-25 23:49:48 +00:00
|
|
|
|
2018-12-27 18:17:09 +00:00
|
|
|
bool Unequip(std::int32_t ID);
|
|
|
|
bool Unequip(const std::string& Name);
|
|
|
|
bool Unequip(const Interactable::Item& Item);
|
2017-12-25 23:49:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
#endif // EQUIPMENT_HPP_INCLUDED
|