]> jfr.im git - irc/gameservirc.git/commitdiff
Refactored playerGO a bit
authorkainazzzo <redacted>
Fri, 18 Sep 2009 21:55:15 +0000 (21:55 +0000)
committerkainazzzo <redacted>
Fri, 18 Sep 2009 21:55:15 +0000 (21:55 +0000)
git-svn-id: https://svn.code.sf.net/p/gameservirc/code/trunk@529 bc333340-6410-0410-a689-9d09f3c113fa

gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/PlayerGO.h
gameserv-2.0/libgameservgldl/src/GameLayer/GameObjects/PlayerGO.cpp

index 7e035ae94294e33b126e21ab448a85404b0f9662..cf21f495919663e90f8e57875c327994ee5d6cfc 100644 (file)
@@ -162,6 +162,8 @@ namespace GameServ { namespace GameLayer { namespace GameObjects
                bool mAlive;\r
 \r
                vector< shared_ptr<ItemGO> > mItems;\r
+\r
+               shared_ptr<ItemGO> CloneItemAsProperType(shared_ptr<ItemGO> spItem) const;\r
        };\r
 }}} // GameServ::GameLayer::GameObjects\r
 #endif
\ No newline at end of file
index 050c8652b6c2e52b458605bd38bf840ae2b56fca..a13d07d56029f0b5f674f19022c19ef80019f0de 100644 (file)
@@ -240,25 +240,28 @@ void PlayerGO::AddItemToInventory(shared_ptr<ItemGO> spItem, const int &Number)
 {\r
        for (int x = 0; x < Number; ++x)\r
        {\r
-               shared_ptr<ItemGO> item;\r
-               switch (spItem->Type())\r
-               {\r
-               case ItemTypes::Armor:\r
-                       mItems.push_back(shared_ptr<ArmorGO>(new ArmorGO(*(ArmorGO *)spItem->Clone())));\r
-                       break;\r
-               case ItemTypes::Weapon:\r
-                       mItems.push_back(shared_ptr<WeaponGO>(new WeaponGO(*(WeaponGO *)spItem->Clone())));\r
-                       break;\r
-               case ItemTypes::Potion:\r
-                       mItems.push_back(shared_ptr<PotionGO>(new PotionGO(*(PotionGO *)spItem->Clone())));\r
-                       break;\r
-               default:\r
-                       throw GameServException(str(format("Unsupported item type added to Player inventory: %1%") %\r
-                               ItemTypes::GetName(spItem->Type())), __FILE__, __LINE__);\r
-               }\r
+               mItems.push_back(CloneItemAsProperType(spItem));\r
        }\r
 }\r
 \r
+shared_ptr<ItemGO> PlayerGO::CloneItemAsProperType(shared_ptr<ItemGO> spItem) const\r
+{\r
+       switch (spItem->Type())\r
+       {\r
+       case ItemTypes::Armor:\r
+               return shared_ptr<ArmorGO>(new ArmorGO(*(ArmorGO *)spItem->Clone()));\r
+               break;\r
+       case ItemTypes::Weapon:\r
+               return shared_ptr<WeaponGO>(new WeaponGO(*(WeaponGO *)spItem->Clone()));\r
+               break;\r
+       case ItemTypes::Potion:\r
+               return shared_ptr<PotionGO>(new PotionGO(*(PotionGO *)spItem->Clone()));\r
+               break;\r
+       default:\r
+               throw GameServException(str(format("Unsupported item type added to Player inventory: %1%") %\r
+                       ItemTypes::GetName(spItem->Type())), __FILE__, __LINE__);\r
+       }\r
+}\r
 void PlayerGO::RemoveItemFromInventory(shared_ptr<ItemGO> spItem, const int &Number)\r
 {\r
        vector< shared_ptr<ItemGO> >::iterator iter;\r