Files
shadow-over-bishkek001/src/items/Item.h
T

45 lines
1.2 KiB
C++

#pragma once
#include <string>
#include <memory>
#include <vector>
#include <functional>
#include "ISaveable.h"
namespace ZL {
struct Item {
std::string id;
std::string name;
std::string description;
std::string icon;
std::string selectedIcon;
Item() = default;
Item(const std::string& _id, const std::string& _name, const std::string& _desc, const std::string& _icon)
: id(_id), name(_name), description(_desc), icon(_icon) {
}
};
class Inventory : public ISaveable {
public:
void addItem(const std::string& itemId);
void removeItem(const std::string& itemId);
// Resolves current items from ItemRegistry by id, so returned data
// always reflects the currently loaded (localized) definitions.
std::vector<Item> getItems() const;
bool hasItem(const std::string& itemId) const;
void clear() { itemIds.clear(); }
size_t getCount() const { return itemIds.size(); }
void save(nlohmann::json& out) const override;
void load(const nlohmann::json& in) override;
// Called whenever an item is added/removed; receives the item id.
std::function<void(const std::string&)> onItemAdded;
std::function<void(const std::string&)> onItemRemoved;
private:
std::vector<std::string> itemIds;
};
} // namespace ZL