diff options
Diffstat (limited to 'src/net/manaserv/inventoryhandler.h')
-rw-r--r-- | src/net/manaserv/inventoryhandler.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/net/manaserv/inventoryhandler.h b/src/net/manaserv/inventoryhandler.h index d3feca0a..fd28738c 100644 --- a/src/net/manaserv/inventoryhandler.h +++ b/src/net/manaserv/inventoryhandler.h @@ -26,8 +26,46 @@ #include "net/manaserv/messagehandler.h" +#include "equipment.h" + namespace ManaServ { +class EquipBackend : public Equipment::Backend { + public: + EquipBackend() + { memset(mEquipment, 0, sizeof(mEquipment)); } + + Item *getEquipment(int index) const + { return mEquipment[index]; } + + void clear() + { + for (int i = 0; i < EQUIPMENT_SIZE; ++i) + delete mEquipment[i]; + + std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); + } + + void setEquipment(int index, int id, int quantity = 0) + { + if (mEquipment[index] && mEquipment[index]->getId() == id) + return; + + delete mEquipment[index]; + mEquipment[index] = (id > 0) ? new Item(id, quantity) : 0; + + if (mEquipment[index]) + { + mEquipment[index]->setInvIndex(index); + mEquipment[index]->setEquipped(true); + mEquipment[index]->setInEquipment(true); + } + } + + private: + Item *mEquipment[EQUIPMENT_SIZE]; +}; + class InventoryHandler : public MessageHandler, Net::InventoryHandler { public: @@ -57,6 +95,9 @@ class InventoryHandler : public MessageHandler, Net::InventoryHandler StorageType destination); size_t getSize(StorageType type) const; + + private: + EquipBackend mEqiups; }; } // namespace ManaServ |