aboutsummaryrefslogtreecommitdiff
path: root/src/game/Bag.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Bag.h')
-rw-r--r--src/game/Bag.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/game/Bag.h b/src/game/Bag.h
index 649c2e21a27..3ae786512ce 100644
--- a/src/game/Bag.h
+++ b/src/game/Bag.h
@@ -17,29 +17,40 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
#ifndef TRINITY_BAG_H
#define TRINITY_BAG_H
+
// Maximum 36 Slots ( (CONTAINER_END - CONTAINER_FIELD_SLOT_1)/2
#define MAX_BAG_SIZE 36 // 2.0.12
+
#include "Item.h"
#include "ItemPrototype.h"
+
class Bag : public Item
{
public:
+
Bag();
~Bag();
+
void AddToWorld();
void RemoveFromWorld();
+
bool Create(uint32 guidlow, uint32 itemid, Player const* owner);
+
void Clear();
void StoreItem( uint8 slot, Item *pItem, bool update );
void RemoveItem( uint8 slot, bool update );
+
Item* GetItemByPos( uint8 slot ) const;
uint32 GetItemCount( uint32 item, Item* eItem = NULL ) const;
+
uint8 GetSlotByItemGUID(uint64 guid) const;
bool IsEmpty() const;
uint32 GetFreeSlots() const;
uint32 GetBagSize() const { return GetUInt32Value(CONTAINER_FIELD_NUM_SLOTS); }
+
// DB operations
// overwrite virtual Item::SaveToDB
void SaveToDB();
@@ -47,11 +58,15 @@ class Bag : public Item
bool LoadFromDB(uint32 guid, uint64 owner_guid, QueryResult *result = NULL);
// overwrite virtual Item::DeleteFromDB
void DeleteFromDB();
+
void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const;
+
protected:
+
// Bag Storage space
Item* m_bagslot[MAX_BAG_SIZE];
};
+
inline Item* NewItemOrBag(ItemPrototype const * proto)
{
return (proto->InventoryType == INVTYPE_BAG) ? new Bag : new Item;