]> jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/InventoryManager.h
Finished up the InventoryManager class, removed the Inventory handling from PlayerGO...
[irc/gameservirc.git] / gameserv-2.0 / libgameservgldl / include / GameServ / GameLayer / Helpers / InventoryManager.h
1 #ifndef __GS__INVENTORYMANAGER_H__
2 #define __GS__INVENTORYMANAGER_H__
3
4 #include <boost/smart_ptr/shared_ptr.hpp>
5 using boost::shared_ptr;
6 #include <GameServ/GameLayer/GameObjects/ItemGO.h>
7 using GameServ::GameLayer::GameObjects::ItemGO;
8 #include <GameServ/GameLayer/GameObjects/PlayerGO.h>
9 using GameServ::GameLayer::GameObjects::PlayerGO;
10
11 #include <list>
12 #include <map>
13 using std::list;
14 using std::map;
15
16
17 namespace GameServ { namespace GameLayer { namespace Helpers {
18
19
20 typedef list< shared_ptr<ItemGO> > ItemList;
21 typedef map<string, ItemList> PlayerInventoryMap;
22
23
24 class InventoryManager
25 {
26 public:
27
28
29 ~InventoryManager();
30
31 static shared_ptr<InventoryManager> Instance();
32
33 void AddItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);
34 void RemoveItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);
35 ItemList GetInventory(shared_ptr<PlayerGO> spPlayer) const;
36
37 protected:
38 InventoryManager();
39 private:
40
41 PlayerInventoryMap mInventoryTable;
42 static shared_ptr<InventoryManager> mInstance;
43
44 }; // InventoryManager
45
46 }}} // GameServ::GameLayer::Helpers
47
48 #endif