]> jfr.im git - irc/gameservirc.git/commitdiff
Wrote the InventoryManager class for... managing inventory for all players
authorkainazzzo <redacted>
Tue, 22 Sep 2009 20:29:46 +0000 (20:29 +0000)
committerkainazzzo <redacted>
Tue, 22 Sep 2009 20:29:46 +0000 (20:29 +0000)
git-svn-id: https://svn.code.sf.net/p/gameservirc/code/trunk@533 bc333340-6410-0410-a689-9d09f3c113fa

gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/InventoryManager.h
gameserv-2.0/libgameservgldl/libgameservgldl.vcproj
gameserv-2.0/libgameservgldl/src/GameLayer/Helpers/InventoryManager.cpp

index 1a8002770b89de2b014ef2b6c82b30bc66e8a3a6..85ff78d31cc6fd08878be97d8a6d14829996ea90 100644 (file)
@@ -1,16 +1,39 @@
 #ifndef __GS__INVENTORYMANAGER_H__\r
 #define __GS__INVENTORYMANAGER_H__\r
 \r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+#include <GameServ/GameLayer/GameObjects/ItemGO.h>\r
+using GameServ::GameLayer::GameObjects::ItemGO;\r
+#include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r
+using GameServ::GameLayer::GameObjects::PlayerGO;\r
+\r
+#include <list>\r
+#include <map>\r
+using std::list;\r
+using std::map;\r
+\r
+\r
 namespace GameServ { namespace GameLayer { namespace Helpers {\r
 \r
+\r
+       typedef list< shared_ptr<ItemGO> > PlayerInventory;\r
+       typedef map<shared_ptr<PlayerGO>, PlayerInventory> InventoryMap;\r
+\r
 class InventoryManager\r
 {\r
 public:\r
        InventoryManager();\r
        ~InventoryManager();\r
 \r
+       void AddItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);\r
+       void RemoveItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem);\r
+       PlayerInventory GetInventory(shared_ptr<PlayerGO> spPlayer) const;      \r
 \r
 private:\r
+\r
+       InventoryMap mInventoryTable;\r
+\r
 }; // InventoryManager\r
 \r
 }}} // GameServ::GameLayer::Helpers\r
index 2cf7182da4422b4ddcf4d1b70f4cc90b2700d94c..560208b803e5035ec4beca6a0ea75a6811cd5579 100644 (file)
                        <Filter\r
                                Name="Helpers"\r
                                >\r
+                               <File\r
+                                       RelativePath=".\src\GameLayer\Helpers\InventoryManager.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\include\GameServ\GameLayer\Helpers\InventoryManager.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                </Filter>\r
        </Files>\r
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..223317ac12c26801b80a2a683f71271120f29a36 100644 (file)
@@ -0,0 +1,56 @@
+#include <GameServ/GameLayer/Helpers/InventoryManager.h>\r
+using GameServ::GameLayer::Helpers::InventoryManager;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
+#include <list>\r
+#include <map>\r
+using std::list;\r
+using std::map;\r
+#include <algorithm>\r
+using std::find;\r
+\r
+typedef list< shared_ptr<ItemGO> > PlayerInventory;\r
+typedef map<shared_ptr<PlayerGO>, PlayerInventory> InventoryMap;\r
+\r
+InventoryManager::InventoryManager()\r
+{\r
+}\r
+\r
+InventoryManager::~InventoryManager()\r
+{\r
+       mInventoryTable.clear();\r
+}\r
+\r
+void InventoryManager::AddItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem)\r
+{\r
+       mInventoryTable[spPlayer].push_back(spItem);\r
+}\r
+\r
+void InventoryManager::RemoveItem(shared_ptr<PlayerGO> spPlayer, shared_ptr<ItemGO> spItem)\r
+{\r
+       InventoryMap::const_iterator iter = mInventoryTable.find(spPlayer);\r
+       if (iter != mInventoryTable.end())\r
+       {\r
+               if (iter->second.size() > 0)\r
+               {\r
+                       PlayerInventory::iterator itemIter = find(mInventoryTable[spPlayer].begin(), \r
+                               mInventoryTable[spPlayer].end(), spItem);\r
+                       if (itemIter != mInventoryTable[spPlayer].end())\r
+                       {\r
+                               mInventoryTable[spPlayer].erase(itemIter);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+PlayerInventory InventoryManager::GetInventory(shared_ptr<PlayerGO> spPlayer) const\r
+{\r
+       InventoryMap::const_iterator iter = mInventoryTable.find(spPlayer);\r
+       if (iter != mInventoryTable.end())\r
+       {\r
+               return iter->second;\r
+       }\r
+       return PlayerInventory();\r
+}\r