summaryrefslogtreecommitdiffstats
path: root/source/Inventory.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Inventory.h')
-rw-r--r--source/Inventory.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/source/Inventory.h b/source/Inventory.h
new file mode 100644
index 000000000..1dd22deec
--- /dev/null
+++ b/source/Inventory.h
@@ -0,0 +1,88 @@
+
+#pragma once
+
+#include "Item.h"
+
+
+
+
+
+namespace Json
+{
+ class Value;
+};
+
+class cClientHandle;
+class cPlayer;
+
+
+
+
+
+class cInventory //tolua_export
+{ //tolua_export
+public:
+ cInventory(cPlayer & a_Owner);
+ ~cInventory();
+
+ void Clear(); //tolua_export
+
+ cItem* GetSlotsForType( int a_Type );
+ int GetSlotCountForType( int a_Type );
+
+ bool AddItem( cItem & a_Item ); //tolua_export
+ bool RemoveItem( cItem & a_Item ); //tolua_export
+
+ void SaveToJson(Json::Value & a_Value);
+ bool LoadFromJson(Json::Value & a_Value);
+
+ void SendWholeInventory(cClientHandle & a_Client);
+
+ cItem * GetSlot(int a_SlotNum ); //tolua_export
+ cItem * GetSlots(void) { return m_Slots; }
+ const cItem * GetSlots(void) const { return m_Slots; }
+ cItem * GetFromHotBar(int a_HotBarSlotNum); //tolua_export
+
+ cItem & GetEquippedItem(void); //tolua_export
+ const cItem & GetEquippedItem(void) const;
+ void SetEquippedSlot(int a_SlotNum); //tolua_export
+ short GetEquippedSlot(void) { return m_EquippedSlot; } //tolua_export
+
+ void SendSlot( int a_SlotNum ); //tolua_export
+
+ /// Returns how many items of the specified type would fit into the slot range specified
+ int HowManyCanFit(short a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot);
+
+ /// Moves items, fitting them into the slot range specified, up to a_Count items. Returns the number of items moved
+ int MoveItem(short a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot);
+
+ static const unsigned int c_NumSlots = 45;
+ static const unsigned int c_MainSlots = 27;
+ static const unsigned int c_HotSlots = 9;
+ static const unsigned int c_CraftSlots = 4;
+ static const unsigned int c_ArmorSlots = 4;
+
+ static const unsigned int c_CraftOffset = 0;
+ static const unsigned int c_ArmorOffset = 5;
+ static const unsigned int c_MainOffset = 9;
+ static const unsigned int c_HotOffset = 36;
+
+protected:
+ bool AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode = 0 );
+
+ cItem m_Slots[c_NumSlots];
+
+ cItem * m_MainSlots;
+ cItem * m_CraftSlots;
+ cItem * m_ArmorSlots;
+ cItem * m_HotSlots;
+
+ cItem * m_EquippedItem;
+ short m_EquippedSlot;
+
+ cPlayer & m_Owner;
+}; //tolua_export
+
+
+
+