]> jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/libgameservgldl/src/GameLayer/Helpers/InventoryManager.cpp
Added the asio framework to start developing a GameServ server
[irc/gameservirc.git] / gameserv-2.0 / libgameservgldl / src / GameLayer / Helpers / InventoryManager.cpp
1 #include <GameServ/GameLayer/Helpers/InventoryManager.h>
2 using namespace GameServ::GameLayer::Helpers;
3
4 #include <boost/smart_ptr/shared_ptr.hpp>
5
6
7 #include <list>
8 #include <map>
9 using std::list;
10 using std::map;
11 #include <algorithm>
12 using std::find;
13
14 boost::shared_ptr<InventoryManager> InventoryManager::mInstance = boost::shared_ptr<InventoryManager>();
15
16 InventoryManager::InventoryManager()
17 {
18 }
19
20 InventoryManager::~InventoryManager()
21 {
22 mInventoryTable.clear();
23 mInstance.reset();
24 }
25
26 boost::shared_ptr<InventoryManager> InventoryManager::Instance(void)
27 {
28 if (mInstance == 0)
29 {
30 mInstance = boost::shared_ptr<InventoryManager>(new InventoryManager());
31 }
32 return mInstance;
33 }
34
35 void InventoryManager::AddItem(const string &PlayerId, boost::shared_ptr<ItemGO> spItem)
36 {
37 mInventoryTable[PlayerId].push_back(spItem);
38 }
39
40 void InventoryManager::RemoveItem(const string &PlayerId, boost::shared_ptr<ItemGO> spItem)
41 {
42 assert(spItem != 0);
43 PlayerInventoryMap::const_iterator iter = mInventoryTable.find(PlayerId);
44 if (iter != mInventoryTable.end())
45 {
46 if (iter->second.size() > 0)
47 {
48 ItemList::iterator itemIter = find(mInventoryTable[PlayerId].begin(),
49 mInventoryTable[PlayerId].end(), spItem);
50 if (itemIter != mInventoryTable[PlayerId].end())
51 {
52 mInventoryTable[PlayerId].erase(itemIter);
53 }
54 }
55 }
56 }
57
58 bool InventoryManager::PlayerHasInventory(const string &PlayerId) const
59 {
60 PlayerInventoryMap::const_iterator iter = mInventoryTable.find(PlayerId);
61 return (iter != mInventoryTable.end());
62 }
63
64 ItemList InventoryManager::GetInventory(const string &PlayerId) const
65 {
66 PlayerInventoryMap::const_iterator iter = mInventoryTable.find(PlayerId);
67 if (iter != mInventoryTable.end())
68 {
69 return iter->second;
70 }
71 return ItemList();
72 }