]> jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/InventoryManager.h
Added the asio framework to start developing a GameServ server
[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
6 #include <GameServ/GameLayer/GameObjects/ItemGO.h>
7 using GameServ::GameLayer::GameObjects::ItemGO;
8
9 #include <list>
10 #include <map>
11 using std::list;
12 using std::map;
13
14
15 namespace GameServ { namespace GameLayer { namespace Helpers {
16
17
18 typedef list< boost::shared_ptr<ItemGO> > ItemList;
19 typedef map<string, ItemList> PlayerInventoryMap;
20
21
22 class InventoryManager
23 {
24 public:
25 ~InventoryManager();
26
27 static boost::shared_ptr<InventoryManager> Instance();
28
29 void AddItem(const string &PlayerId, boost::shared_ptr<ItemGO> spItem);
30 void RemoveItem(const string &PlayerId, boost::shared_ptr<ItemGO> spItem);
31 ItemList GetInventory(const string &PlayerId) const;
32 bool PlayerHasInventory(const string &PlayerId) const;
33
34 protected:
35 InventoryManager();
36 private:
37
38 PlayerInventoryMap mInventoryTable;
39 static boost::shared_ptr<InventoryManager> mInstance;
40
41 }; // InventoryManager
42
43 }}} // GameServ::GameLayer::Helpers
44
45 #endif