Tramway SDK
inventory.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H
4#define TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H
5
7
8#include <framework/gui.h>
9
10namespace tram {
11 class Entity;
12}
13
14namespace tram::Ext::Kitchensink {
15
16struct Inventory;
17struct ItemInstance;
19
20class ItemClass {
21public:
24
27
29
30 // TODO: add getter methods
31 // in addition, these getter methods should descend the item class
32 // hierarchy and find the first valid thing to return
33
38
39 int width = 1, height = 1;
40 int stack = 1, value = 0;
41
42 float weight = 0.0f;
43
45
46 void FireEquip(Inventory*);
48 void FireAdded(Inventory*);
52 void FireIdle(Inventory*);
53
54 virtual bool OnEquip(ItemClass*, Inventory*) { return false; }
55 virtual bool OnUnequip(ItemClass*, Inventory*) { return false; }
56 virtual bool OnAdded(ItemClass*, Inventory*) { return false; }
57 virtual bool OnRemoved(ItemClass*, Inventory*) { return false; }
58 virtual bool OnPrimaryAction(ItemClass*, Inventory*) { return false; }
59 virtual bool OnSecondaryAction(ItemClass*, Inventory*) { return false; }
60 virtual bool OnIdle(ItemClass*, Inventory*) { return false; }
61
62 std::vector<Attribute> attributes;
63 std::vector<Effect> effects;
64
65 static void Register(ItemClass*);
66 static ItemClass* Find(name_t item_class);
67};
68
72 int count = 1;
73 int x = 0, y = 0;
74 bool equipped = false;
75};
76
78public:
79 virtual int AddItem(name_t item_class, int count) = 0;
80 virtual int RemoveItem(name_t item_class, int count) = 0;
81 virtual int GetItemCount(name_t item_class) = 0;
82
83 virtual std::vector<name_t> GetItems() = 0;
84
85 virtual ~InventoryManager() = default;
86
87 static InventoryManager* New(name_t compartment);
88 static void Delete(name_t compartment, InventoryManager*);
89 static void Register(name_t compartment, InventoryManager*(*make)(), void (*clear)(InventoryManager*));
90};
91
93public:
94 int AddItem(name_t item_class, int count) override;
95 int RemoveItem(name_t item_class, int count) override;
96 int GetItemCount(name_t item_class) override;
97
98 std::vector<name_t> GetItems() override;
99
100 ~ListInventoryManager() override = default;
101
102 std::vector<std::pair<name_t, int>> items;
103};
104
106public:
108
109 int AddItem(name_t item_class, int count);
110 int RemoveItem(name_t item_class, int count);
111 int GetItemCount(name_t item_class);
112
113 bool EquipItem(name_t item_class);
114 bool UnequipItem(name_t item_class);
115 bool UnequipSlot(name_t item_slot);
116 bool IsEquippedItem(name_t item);
117 bool IsEquippedSlot(name_t slot);
119
121
123
124 std::vector<std::pair<name_t, name_t>> equipped;
125 std::vector<std::pair<name_t, InventoryManager*>> compartments;
126public:
127
128 static void LoadFromDisk(const char* filename);
129 static Inventory* Find(Entity* entity);
130};
131
132}
133
134#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H
Entity base class.
Definition: entity.h:23
Definition: inventory.h:105
bool UnequipSlot(name_t item_slot)
Definition: inventory.cpp:290
bool EquipItem(name_t item_class)
Definition: inventory.cpp:228
id_t parent
Definition: inventory.h:122
static Inventory * Find(Entity *entity)
Definition: inventory.cpp:323
std::vector< std::pair< name_t, InventoryManager * > > compartments
Definition: inventory.h:125
bool UnequipItem(name_t item_class)
Definition: inventory.cpp:272
int GetItemCount(name_t item_class)
Definition: inventory.cpp:222
bool IsEquippedItem(name_t item)
Definition: inventory.cpp:308
static void LoadFromDisk(const char *filename)
Definition: inventory.cpp:335
name_t GetEquippedItem(name_t slot)
Definition: inventory.cpp:318
std::vector< std::pair< name_t, name_t > > equipped
Definition: inventory.h:124
int RemoveItem(name_t item_class, int count)
Definition: inventory.cpp:211
int AddItem(name_t item_class, int count)
Definition: inventory.cpp:200
bool IsEquippedSlot(name_t slot)
Definition: inventory.cpp:313
InventoryManager * FindCompartment(name_t compartment)
Definition: inventory.cpp:187
Inventory(id_t parent)
Definition: inventory.h:107
virtual int AddItem(name_t item_class, int count)=0
static void Register(name_t compartment, InventoryManager *(*make)(), void(*clear)(InventoryManager *))
Definition: inventory.cpp:114
virtual std::vector< name_t > GetItems()=0
virtual int GetItemCount(name_t item_class)=0
virtual int RemoveItem(name_t item_class, int count)=0
static InventoryManager * New(name_t compartment)
Definition: inventory.cpp:92
static void Delete(name_t compartment, InventoryManager *)
Definition: inventory.cpp:104
Definition: inventory.h:20
GUI::glyph_t sprite_glyph
Definition: inventory.h:36
int height
Definition: inventory.h:39
name_t equipped_slot
Definition: inventory.h:28
name_t default_compartment
Definition: inventory.h:44
virtual bool OnAdded(ItemClass *, Inventory *)
Definition: inventory.h:56
void FireEquip(Inventory *)
Definition: inventory.cpp:42
virtual bool OnSecondaryAction(ItemClass *, Inventory *)
Definition: inventory.h:59
virtual bool OnRemoved(ItemClass *, Inventory *)
Definition: inventory.h:57
static ItemClass * Find(name_t item_class)
Definition: inventory.cpp:30
name_t base_class
Definition: inventory.h:23
void FirePrimaryAction(Inventory *)
Definition: inventory.cpp:70
void FireAdded(Inventory *)
Definition: inventory.cpp:56
void FireRemoved(Inventory *)
Definition: inventory.cpp:63
GUI::font_t sprite_font
Definition: inventory.h:34
virtual bool OnIdle(ItemClass *, Inventory *)
Definition: inventory.h:60
void FireSecondaryAction(Inventory *)
Definition: inventory.cpp:77
GUI::glyph_t icon_glyph
Definition: inventory.h:37
std::vector< Attribute > attributes
Definition: inventory.h:62
virtual bool OnEquip(ItemClass *, Inventory *)
Definition: inventory.h:54
virtual bool OnPrimaryAction(ItemClass *, Inventory *)
Definition: inventory.h:58
int value
Definition: inventory.h:40
void FireIdle(Inventory *)
Definition: inventory.cpp:84
name_t name
Definition: inventory.h:22
GUI::font_t icon_font
Definition: inventory.h:35
void FireUnequip(Inventory *)
Definition: inventory.cpp:49
name_t viewmodel
Definition: inventory.h:25
float weight
Definition: inventory.h:42
std::vector< Effect > effects
Definition: inventory.h:63
virtual bool OnUnequip(ItemClass *, Inventory *)
Definition: inventory.h:55
static void Register(ItemClass *)
Definition: inventory.cpp:26
name_t worldmodel
Definition: inventory.h:26
int width
Definition: inventory.h:39
int stack
Definition: inventory.h:40
int GetItemCount(name_t item_class) override
Definition: inventory.cpp:169
std::vector< name_t > GetItems() override
Definition: inventory.cpp:178
std::vector< std::pair< name_t, int > > items
Definition: inventory.h:102
int AddItem(name_t item_class, int count) override
Definition: inventory.cpp:121
int RemoveItem(name_t item_class, int count) override
Definition: inventory.cpp:152
Extension containing random stuff that doesn't fit in anywhere else.
Definition: ai.cpp:15
void(* item_action_func)(Inventory *, ItemInstance *)
Definition: inventory.h:18
uint32_t font_t
Definition: gui.h:14
uint32_t glyph_t
Definition: gui.h:15
Serialization, i.e.
uint32_t id_t
Definition: core.h:10
Definition: inventory.h:69
name_t compartment
Definition: inventory.h:71
bool equipped
Definition: inventory.h:74
int y
Definition: inventory.h:73
int x
Definition: inventory.h:73
name_t item_class
Definition: inventory.h:70
int count
Definition: inventory.h:72
Interned string type.
Definition: uid.h:10