#include <GameServ/GameLayer/GameObjects/MonsterGO.h>\r
using GameServ::GameLayer::GameObjects::MonsterGO;\r
\r
+#include <GameServ/Types.h>\r
+using GameServ::Types::ObjectTypes;\r
+\r
+#include <boost/smart_ptr/shared_ptr.hpp>\r
+using boost::shared_ptr;\r
+\r
#include <string>\r
using std::string;\r
#include <vector>\r
\r
virtual LevelGO *Clone(void) const;\r
\r
+ virtual ObjectTypes::ObjectType ObjectType(void) const;\r
+\r
+ //! Property set - Master\r
+ void Master(shared_ptr<MasterGO> spMaster);\r
+\r
+ //! Property get - Master\r
+ shared_ptr<MasterGO> Master(void) const;\r
+\r
+ //! Property set - Monster list\r
+ void Monsters(const vector< shared_ptr<MonsterGO> > &spMonsters);\r
+\r
+ //! Property get - Monster List\r
+ vector< shared_ptr<MonsterGO> > Monsters(void) const;\r
+\r
+ //! Remove a monster from the list\r
+ void RemoveMonster(shared_ptr<MonsterGO> spMonster);\r
+\r
+ //! Add a monster to the list\r
+ void AddMonster(shared_ptr<MonsterGO> spMonster);\r
+\r
private:\r
\r
vector< shared_ptr<MonsterGO> > mspMonsters;\r
vector< shared_ptr<ItemGO> > Inventory(void) const;\r
\r
//! Add item to inventory\r
- void AddItemToInventory(shared_ptr<ItemGO> spItem, const int &Number=1);\r
+ void AddItemToInventory(shared_ptr<ItemGO> spItem);\r
//! Remove item from inventory\r
- void RemoveItemFromInventory(shared_ptr<ItemGO> spItem, const int &Number=1);\r
+ void RemoveItemFromInventory(shared_ptr<ItemGO> spItem);\r
\r
bool operator==(const PlayerGO &right) const;\r
bool operator!=(const PlayerGO &right) const;\r
+#include <GameServ/GameLayer/GameObjects/LevelGO.h>\r
+using GameServ::GameLayer::GameObjects::LevelGO;\r
+\r
+#include <GameServ/Types.h>\r
+using GameServ::Types::ObjectTypes;\r
+\r
+#include <vector>\r
+using std::vector;\r
+\r
+#include <string>\r
+using std::string;\r
+\r
+LevelGO::LevelGO() : GameObject()\r
+{\r
+}\r
+\r
+LevelGO::LevelGO(const string &Id) : GameObject(Id)\r
+{\r
+}\r
+\r
+LevelGO::~LevelGO()\r
+{\r
+ mspMonsters.clear();\r
+ mspMaster.reset();\r
+}\r
+\r
+bool LevelGO::operator ==(const LevelGO &right) const\r
+{\r
+ bool equal = (right.mspMaster == mspMaster && right.mspMonsters.size() == mspMonsters.size());\r
+ // Just because it's expensive to check an entire vector, let's split it off to be sure the\r
+ // initial comparison is true first.\r
+ if (equal)\r
+ {\r
+ return right.mspMonsters == mspMonsters;\r
+ }\r
+ return equal;\r
+}\r
+\r
+bool LevelGO::operator !=(const LevelGO &right) const\r
+{\r
+ return !(operator==(right));\r
+}\r
+\r
+LevelGO *LevelGO::Clone(void) const\r
+{\r
+ return new LevelGO(*this);\r
+}\r
+\r
+ObjectTypes::ObjectType LevelGO::ObjectType(void) const\r
+{\r
+ return ObjectTypes::Level;\r
+}\r
+\r
+void LevelGO::AddMonster(shared_ptr<MonsterGO> spMonster)\r
+{\r
+ vector< shared_ptr<MonsterGO> >::const_iterator iter;\r
+ iter = std::find(mspMonsters.begin(), mspMonsters.end(), spMonster);\r
+ if (iter == mspMonsters.end())\r
+ {\r
+ mspMonsters.push_back(spMonster);\r
+ }\r
+}\r
+\r
+void LevelGO::RemoveMonster(shared_ptr<MonsterGO> spMonster)\r
+{\r
+ vector< shared_ptr<MonsterGO> >::const_iterator iter;\r
+ iter = std::find(mspMonsters.begin(), mspMonsters.end(), spMonster);\r
+ if (iter != mspMonsters.end())\r
+ {\r
+ mspMonsters.erase(iter);\r
+ }\r
+}\r
+\r
+void LevelGO::Monsters(const vector< shared_ptr<MonsterGO> > &spMonsters)\r
+{\r
+ mspMonsters = spMonsters;\r
+}\r
+\r
+vector< shared_ptr<MonsterGO> > LevelGO::Monsters(void) const\r
+{\r
+ return mspMonsters;\r
+}\r
+\r
+void LevelGO::Master(shared_ptr<MasterGO> spMaster)\r
+{\r
+ mspMaster = spMaster;\r
+}\r
+\r
+shared_ptr<MasterGO> LevelGO::Master(void) const\r
+{\r
+ return mspMaster;\r
+}\r
+\r
+\r
+\r
#include <string>\r
using std::string;\r
\r
-MasterGO::MasterGO()\r
+MasterGO::MasterGO() : GameObject()\r
{\r
}\r
\r
return mItems;\r
}\r
\r
-void PlayerGO::AddItemToInventory(shared_ptr<ItemGO> spItem, const int &Number)\r
+void PlayerGO::AddItemToInventory(shared_ptr<ItemGO> spItem)\r
{\r
- for (int x = 0; x < Number; ++x)\r
- {\r
- mItems.push_back(CloneItemAsProperType(spItem));\r
- }\r
+ mItems.push_back(spItem);\r
}\r
\r
shared_ptr<ItemGO> PlayerGO::CloneItemAsProperType(shared_ptr<ItemGO> spItem) const\r
ItemTypes::GetName(spItem->Type())), __FILE__, __LINE__);\r
}\r
}\r
-void PlayerGO::RemoveItemFromInventory(shared_ptr<ItemGO> spItem, const int &Number)\r
+void PlayerGO::RemoveItemFromInventory(shared_ptr<ItemGO> spItem)\r
{\r
vector< shared_ptr<ItemGO> >::iterator iter;\r
- for (int x = 0; x < Number; ++x)\r
+ iter = find(mItems.begin(), mItems.end(), spItem);\r
+ if (iter != mItems.end())\r
{\r
- iter = find(mItems.begin(), mItems.end(), spItem);\r
- if (iter != mItems.end())\r
- {\r
- mItems.erase(iter);\r
- }\r
- else\r
- {\r
- break;\r
- }\r
+ mItems.erase(iter);\r
}\r
}\r
\r