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