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