2019-10-06 11:50:52 +00:00
|
|
|
#ifndef CREATURELIB_ITEMLIBRARY_HPP
|
|
|
|
#define CREATURELIB_ITEMLIBRARY_HPP
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include <unordered_map>
|
|
|
|
#include "Items/Item.hpp"
|
|
|
|
|
|
|
|
namespace CreatureLib::Library {
|
|
|
|
class ItemLibrary {
|
|
|
|
private:
|
2019-11-28 11:55:22 +00:00
|
|
|
std::unordered_map<std::string, const Item*> _items;
|
|
|
|
|
2019-10-06 11:50:52 +00:00
|
|
|
public:
|
2019-12-31 09:48:52 +00:00
|
|
|
ItemLibrary(size_t initialCapacity = 32)
|
|
|
|
: _items(std::unordered_map<std::string, const Item*>(initialCapacity)){};
|
2020-01-02 16:48:14 +00:00
|
|
|
virtual ~ItemLibrary() { _items.clear(); }
|
2019-10-06 11:50:52 +00:00
|
|
|
|
|
|
|
[[nodiscard]] const Item* GetItem(const std::string& name) const;
|
2019-11-28 11:55:22 +00:00
|
|
|
[[nodiscard]] const Item* operator[](const std::string& name) const;
|
2019-10-06 11:50:52 +00:00
|
|
|
|
|
|
|
void LoadItem(const std::string& name, const Item* item);
|
|
|
|
void DeleteItem(const std::string& name);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
#endif // CREATURELIB_ITEMLIBRARY_HPP
|