]> jfr.im git - irc/gameservirc.git/blame - gameserv-2.0/libgameservgldl/src/GameLayer/GameObjects/ItemGO.cpp
Changed all references of HP to Health
[irc/gameservirc.git] / gameserv-2.0 / libgameservgldl / src / GameLayer / GameObjects / ItemGO.cpp
CommitLineData
4534c364 1#include <GameServ/GameLayer/GameObjects/ItemGO.h>\r
2using GameServ::GameLayer::GameObjects::ItemGO;\r
23f6e925 3#include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r
4using GameServ::GameLayer::GameObjects::PlayerGO;\r
4534c364 5\r
e0d3cb09 6#include <GameServ/Types.h>\r
7using GameServ::Types::ItemTypes;\r
cce88913 8using GameServ::Types::Modifiers;\r
e0d3cb09 9\r
4534c364 10#include <string>\r
11using std::string;\r
cce88913 12#include <map>\r
13using std::map;\r
4534c364 14\r
cce88913 15#include <boost/smart_ptr/shared_ptr.hpp>\r
551b6a1d 16using boost::shared_ptr;\r
23f6e925 17using boost::shared_static_cast;\r
18\r
19#include <boost/algorithm/string.hpp>\r
20#include <boost/format.hpp>\r
21using boost::str;\r
22using boost::format;\r
551b6a1d 23\r
e0d3cb09 24ItemGO::ItemGO() : GameObject(), mName(""), mPrice(0), mUses(1), mType(ItemTypes::NOTYPE)\r
4534c364 25{\r
4534c364 26}\r
27\r
28ItemGO::~ItemGO()\r
29{\r
30}\r
31\r
32string ItemGO::Name(void) const\r
33{\r
34 return mName;\r
35}\r
36\r
37void ItemGO::Name(const string &value)\r
38{\r
39 mName = value;\r
40}\r
41\r
42unsigned long int ItemGO::Price(void) const\r
43{\r
44 return mPrice;\r
45}\r
46\r
47void ItemGO::Price(const unsigned long int &price)\r
48{\r
49 mPrice = price;\r
50}\r
51\r
52int ItemGO::Uses(void) const\r
53{\r
54 return mUses;\r
55}\r
56\r
57void ItemGO::Uses(const int &value)\r
58{\r
59 mUses = value;\r
60}\r
61\r
23f6e925 62void ItemGO::Use(shared_ptr<GameObject> spPlayer)\r
63{\r
64 map<Modifiers::Modifier, int>::const_iterator iter;\r
65 for (iter = mModifiers.begin(); iter != mModifiers.end(); iter++)\r
66 {\r
67 ApplyModifier(spPlayer, iter->first, iter->second);\r
68 }\r
69}\r
70\r
71void ItemGO::ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, const int &num)\r
72{\r
73 shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
74 switch (modifier)\r
75 {\r
76 case Modifiers::strength:\r
77 spPlayer->Strength(spPlayer->Strength() + num);\r
78 break;\r
79 case Modifiers::defense:\r
80 spPlayer->Defense(spPlayer->Defense() + num);\r
81 break;\r
82 case Modifiers::health:\r
83 spPlayer->Health(spPlayer->Health() + num);\r
84 break;\r
85 case Modifiers::maxhealth:\r
86 spPlayer->MaxHealth(spPlayer->MaxHealth() + num);\r
87 break;\r
88 case Modifiers::gold:\r
89 spPlayer->Gold(spPlayer->Gold() + num);\r
90 break;\r
91 case Modifiers::bank:\r
92 spPlayer->Bank(spPlayer->Bank() + num);\r
93 break;\r
94 case Modifiers::forestfights:\r
95 spPlayer->ForestFights(spPlayer->ForestFights() + num);\r
96 break;\r
97 case Modifiers::playerfights:\r
98 spPlayer->PlayerFights(spPlayer->PlayerFights() + num);\r
99 break;\r
100 default:\r
101 throw GameServException(str(format("Invalid modifier %1%") % modifier), __FILE__, __LINE__);\r
102 }\r
103}\r
104\r
e0d3cb09 105ItemTypes::ItemType ItemGO::Type(void) const\r
4534c364 106{\r
107 return mType;\r
108}\r
109\r
e0d3cb09 110void ItemGO::Type(const ItemTypes::ItemType &value)\r
4534c364 111{\r
112 mType = value;\r
113}\r
114\r
cce88913 115map<Modifiers::Modifier, int> ItemGO::Modifiers(void) const\r
4534c364 116{\r
117 return mModifiers;\r
118}\r
119\r
cce88913 120void ItemGO::Modifiers(const map<Modifiers::Modifier, int> &modifiers)\r
4534c364 121{\r
122 mModifiers.clear();\r
cce88913 123 mModifiers.insert(modifiers.begin(), modifiers.end());\r
4534c364 124}\r
125\r
126ItemGO *ItemGO::Clone(void) const\r
127{\r
128 return new ItemGO(*this);\r
129}\r
130\r
131\r
132\r
133\r
134\r
135\r
136\r