]>
Commit | Line | Data |
---|---|---|
4534c364 | 1 | #include <GameServ/GameLayer/GameObjects/ItemGO.h>\r |
2 | using GameServ::GameLayer::GameObjects::ItemGO;\r | |
23f6e925 | 3 | #include <GameServ/GameLayer/GameObjects/PlayerGO.h>\r |
4 | using GameServ::GameLayer::GameObjects::PlayerGO;\r | |
4534c364 | 5 | \r |
e0d3cb09 | 6 | #include <GameServ/Types.h>\r |
7 | using GameServ::Types::ItemTypes;\r | |
cce88913 | 8 | using GameServ::Types::Modifiers;\r |
e0d3cb09 | 9 | \r |
4534c364 | 10 | #include <string>\r |
11 | using std::string;\r | |
cce88913 | 12 | #include <map>\r |
13 | using std::map;\r | |
4534c364 | 14 | \r |
cce88913 | 15 | #include <boost/smart_ptr/shared_ptr.hpp>\r |
551b6a1d | 16 | using boost::shared_ptr;\r |
23f6e925 | 17 | using boost::shared_static_cast;\r |
18 | \r | |
19 | #include <boost/algorithm/string.hpp>\r | |
20 | #include <boost/format.hpp>\r | |
21 | using boost::str;\r | |
22 | using boost::format;\r | |
551b6a1d | 23 | \r |
e0d3cb09 | 24 | ItemGO::ItemGO() : GameObject(), mName(""), mPrice(0), mUses(1), mType(ItemTypes::NOTYPE)\r |
4534c364 | 25 | {\r |
4534c364 | 26 | }\r |
27 | \r | |
28 | ItemGO::~ItemGO()\r | |
29 | {\r | |
30 | }\r | |
31 | \r | |
32 | string ItemGO::Name(void) const\r | |
33 | {\r | |
34 | return mName;\r | |
35 | }\r | |
36 | \r | |
37 | void ItemGO::Name(const string &value)\r | |
38 | {\r | |
39 | mName = value;\r | |
40 | }\r | |
41 | \r | |
42 | unsigned long int ItemGO::Price(void) const\r | |
43 | {\r | |
44 | return mPrice;\r | |
45 | }\r | |
46 | \r | |
47 | void ItemGO::Price(const unsigned long int &price)\r | |
48 | {\r | |
49 | mPrice = price;\r | |
50 | }\r | |
51 | \r | |
52 | int ItemGO::Uses(void) const\r | |
53 | {\r | |
54 | return mUses;\r | |
55 | }\r | |
56 | \r | |
57 | void ItemGO::Uses(const int &value)\r | |
58 | {\r | |
59 | mUses = value;\r | |
60 | }\r | |
61 | \r | |
23f6e925 | 62 | void 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 | |
71 | void 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 | 105 | ItemTypes::ItemType ItemGO::Type(void) const\r |
4534c364 | 106 | {\r |
107 | return mType;\r | |
108 | }\r | |
109 | \r | |
e0d3cb09 | 110 | void ItemGO::Type(const ItemTypes::ItemType &value)\r |
4534c364 | 111 | {\r |
112 | mType = value;\r | |
113 | }\r | |
114 | \r | |
cce88913 | 115 | map<Modifiers::Modifier, int> ItemGO::Modifiers(void) const\r |
4534c364 | 116 | {\r |
117 | return mModifiers;\r | |
118 | }\r | |
119 | \r | |
cce88913 | 120 | void 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 | |
126 | ItemGO *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 |