Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Bag.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_BAG_H
7#define SKYFIRE_BAG_H
8
9// Maximum 36 Slots ((CONTAINER_END - CONTAINER_FIELD_SLOTS)/2
10#define MAX_BAG_SIZE 36 // 2.0.12
11
12#include "Item.h"
13#include "ItemPrototype.h"
14
15class Bag : public Item
16{
17public:
18 Bag();
19 ~Bag();
20
21 void AddToWorld() OVERRIDE;
23
24 bool Create(uint32 guidlow, uint32 itemid, Player const* owner) OVERRIDE;
25
26 void StoreItem(uint8 slot, Item* pItem, bool update);
27 void RemoveItem(uint8 slot, bool update);
28
29 Item* GetItemByPos(uint8 slot) const;
30 uint32 GetItemCount(uint32 item, Item* eItem = NULL) const;
31 uint32 GetItemCountWithLimitCategory(uint32 limitCategory, Item* skipItem = NULL) const;
32
33 uint8 GetSlotByItemGUID(uint64 guid) const;
34 bool IsEmpty() const;
35 uint32 GetFreeSlots() const;
37
38 // DB operations
39 // overwrite virtual Item::SaveToDB
40 void SaveToDB(SQLTransaction& trans) OVERRIDE;
41 // overwrite virtual Item::LoadFromDB
42 bool LoadFromDB(uint32 guid, uint64 owner_guid, Field* fields, uint32 entry) OVERRIDE;
43 // overwrite virtual Item::DeleteFromDB
45
47
48protected:
49 // Bag Storage space
51};
52
53inline Item* NewItemOrBag(ItemTemplate const* proto)
54{
55 return (proto->InventoryType == INVTYPE_BAG) ? new Bag : new Item;
56}
57#endif
#define MAX_BAG_SIZE
Definition Bag.h:10
Item * NewItemOrBag(ItemTemplate const *proto)
Definition Bag.h:53
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ INVTYPE_BAG
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
Definition Transaction.h:42
@ CONTAINER_FIELD_NUM_SLOTS
Definition Bag.h:16
uint32 GetBagSize() const
Definition Bag.h:36
void StoreItem(uint8 slot, Item *pItem, bool update)
Definition Bag.cpp:144
bool Create(uint32 guidlow, uint32 itemid, Player const *owner) OVERRIDE
Definition Bag.cpp:59
bool IsEmpty() const
Definition Bag.cpp:169
uint8 GetSlotByItemGUID(uint64 guid) const
Definition Bag.cpp:215
uint32 GetItemCountWithLimitCategory(uint32 limitCategory, Item *skipItem=NULL) const
Definition Bag.cpp:202
void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const OVERRIDE
Definition Bag.cpp:159
~Bag()
Definition Bag.cpp:25
void RemoveFromWorld() OVERRIDE
Definition Bag.cpp:50
Item * GetItemByPos(uint8 slot) const
Definition Bag.cpp:225
bool LoadFromDB(uint32 guid, uint64 owner_guid, Field *fields, uint32 entry) OVERRIDE
Definition Bag.cpp:96
void AddToWorld() OVERRIDE
Definition Bag.cpp:41
void SaveToDB(SQLTransaction &trans) OVERRIDE
Definition Bag.cpp:91
void DeleteFromDB(SQLTransaction &trans) OVERRIDE
Definition Bag.cpp:114
uint32 GetItemCount(uint32 item, Item *eItem=NULL) const
Definition Bag.cpp:178
void RemoveItem(uint8 slot, bool update)
Definition Bag.cpp:133
Item * m_bagslot[MAX_BAG_SIZE]
Definition Bag.h:50
uint32 GetFreeSlots() const
Definition Bag.cpp:123
Bag()
Definition Bag.cpp:15
Definition Field.h:16
Definition Item.h:202
Item()
Definition Item.cpp:233
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:325
uint32 InventoryType