#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 <GameServ/Types.h>\r
using GameServ::Types::ItemTypes;\r
\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
using boost::shared_ptr;\r
+using boost::shared_static_cast;\r
+\r
+#include <boost/algorithm/string.hpp>\r
+#include <boost/format.hpp>\r
+using boost::str;\r
+using boost::format;\r
\r
ItemGO::ItemGO() : GameObject(), mName(""), mPrice(0), mUses(1), mType(ItemTypes::NOTYPE)\r
{\r
mUses = value;\r
}\r
\r
+void ItemGO::Use(shared_ptr<GameObject> spPlayer)\r
+{\r
+ map<Modifiers::Modifier, int>::const_iterator iter;\r
+ for (iter = mModifiers.begin(); iter != mModifiers.end(); iter++)\r
+ {\r
+ ApplyModifier(spPlayer, iter->first, iter->second);\r
+ }\r
+}\r
+\r
+void ItemGO::ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, const int &num)\r
+{\r
+ shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
+ switch (modifier)\r
+ {\r
+ case Modifiers::strength:\r
+ spPlayer->Strength(spPlayer->Strength() + num);\r
+ break;\r
+ case Modifiers::defense:\r
+ spPlayer->Defense(spPlayer->Defense() + num);\r
+ break;\r
+ case Modifiers::health:\r
+ spPlayer->Health(spPlayer->Health() + num);\r
+ break;\r
+ case Modifiers::maxhealth:\r
+ spPlayer->MaxHealth(spPlayer->MaxHealth() + num);\r
+ break;\r
+ case Modifiers::gold:\r
+ spPlayer->Gold(spPlayer->Gold() + num);\r
+ break;\r
+ case Modifiers::bank:\r
+ spPlayer->Bank(spPlayer->Bank() + num);\r
+ break;\r
+ case Modifiers::forestfights:\r
+ spPlayer->ForestFights(spPlayer->ForestFights() + num);\r
+ break;\r
+ case Modifiers::playerfights:\r
+ spPlayer->PlayerFights(spPlayer->PlayerFights() + num);\r
+ break;\r
+ default:\r
+ throw GameServException(str(format("Invalid modifier %1%") % modifier), __FILE__, __LINE__);\r
+ }\r
+}\r
+\r
ItemTypes::ItemType ItemGO::Type(void) const\r
{\r
return mType;\r