summaryrefslogtreecommitdiffstats
path: root/game/shared/world/item_registry.hh
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/world/item_registry.hh')
-rw-r--r--game/shared/world/item_registry.hh50
1 files changed, 6 insertions, 44 deletions
diff --git a/game/shared/world/item_registry.hh b/game/shared/world/item_registry.hh
index c3e6cf9..b4c9fda 100644
--- a/game/shared/world/item_registry.hh
+++ b/game/shared/world/item_registry.hh
@@ -1,56 +1,18 @@
#pragma once
-#include "core/resource/resource.hh"
-
-#include "shared/types.hh"
-
-// This resource is only defined client-side and
-// resource_ptr<TextureGUI> should remain set to null
-// anywhere else in the shared and server code
-struct TextureGUI;
-
-namespace world
-{
-struct ItemInfo final {
- std::string name;
- std::string texture;
- voxel_id place_voxel;
-
- resource_ptr<TextureGUI> cached_texture; // Client-side only
-};
-} // namespace world
-
-namespace world
-{
-class ItemInfoBuilder final {
-public:
- explicit ItemInfoBuilder(std::string_view name);
- virtual ~ItemInfoBuilder(void) = default;
-
-public:
- ItemInfoBuilder& set_texture(std::string_view texture);
- ItemInfoBuilder& set_place_voxel(voxel_id place_voxel);
-
-public:
- item_id build(void) const;
-
-private:
- ItemInfo prototype;
-};
-} // namespace world
+#include "shared/world/item.hh"
namespace world::item_registry
{
-extern std::unordered_map<std::string, ItemInfoBuilder> builders;
extern std::unordered_map<std::string, item_id> names;
-extern std::vector<std::shared_ptr<ItemInfo>> items;
+extern std::vector<std::unique_ptr<Item>> items;
} // namespace world::item_registry
namespace world::item_registry
{
-ItemInfoBuilder& construct(std::string_view name);
-ItemInfo* find(std::string_view name);
-ItemInfo* find(const item_id item);
+Item* register_item(const ItemBuilder& builder);
+Item* find(std::string_view name);
+Item* find(const item_id item);
} // namespace world::item_registry
namespace world::item_registry
@@ -60,5 +22,5 @@ void purge(void);
namespace world::item_registry
{
-std::uint64_t calculate_checksum(void);
+std::uint64_t get_checksum(void);
} // namespace world::item_registry