#include <GameServ/Types.h>\r
using GameServ::Types::ItemTypes;\r
using GameServ::Types::Modifiers;\r
-using GameServ::Types::Range;\r
+using GameServ::Types::IntRange;\r
using GameServ::Types::ObjectTypes;\r
\r
#include <GameServ/GameServException.h>\r
using std::map;\r
\r
#include <boost/smart_ptr/shared_ptr.hpp>\r
-using boost::shared_ptr;\r
+\r
using boost::shared_static_cast;\r
\r
#include <boost/algorithm/string.hpp>\r
using boost::str;\r
using boost::format;\r
\r
-ItemGO::ItemGO() : GameObject(), mName(""), mPrice(0), mUses(1)\r
+ItemGO::ItemGO() : GameObject()\r
{\r
+ mName = "";\r
+ mPrice = 0;\r
+ mUses = 0;\r
+ mNumber = 0;\r
}\r
\r
ItemGO::~ItemGO()\r
{\r
}\r
\r
+unsigned long long ItemGO::Number(void) const\r
+{\r
+ return mNumber;\r
+}\r
+\r
+void ItemGO::Number(const unsigned long long &value)\r
+{\r
+ mNumber = value;\r
+}\r
+\r
string ItemGO::Name(void) const\r
{\r
return mName;\r
mUses = value;\r
}\r
\r
-void ItemGO::Use(shared_ptr<GameObject> spObject)\r
+void ItemGO::Use(boost::shared_ptr<GameObject> spObject)\r
{\r
- map<Modifiers::Modifier, Range>::const_iterator iter;\r
+ map<Modifiers::Modifier, IntRange>::const_iterator iter;\r
for (iter = mModifiers.begin(); iter != mModifiers.end(); iter++)\r
{\r
ApplyModifier(spObject, iter->first, iter->second);\r
}\r
}\r
\r
-void ItemGO::Undo(shared_ptr<GameObject> spObject)\r
+void ItemGO::Undo(boost::shared_ptr<GameObject> spObject)\r
{\r
- map<Modifiers::Modifier, Range>::const_iterator iter;\r
+ map<Modifiers::Modifier, IntRange>::const_iterator iter;\r
for (iter = mModifiers.begin(); iter != mModifiers.end(); iter++)\r
{\r
UndoModifier(spObject, iter->first, iter->second);\r
}\r
}\r
\r
-void ItemGO::ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range r)\r
+void ItemGO::ApplyModifier(boost::shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, IntRange r)\r
{\r
if (spObject->ObjectType() != ObjectTypes::Player)\r
{\r
Id() % Name() % ObjectTypes::GetName(spObject->ObjectType())), __FILE__, __LINE__);\r
}\r
\r
- shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
+ boost::shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
\r
switch (modifier)\r
{\r
}\r
}\r
\r
-void ItemGO::UndoModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range r)\r
+void ItemGO::UndoModifier(boost::shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, IntRange r)\r
{\r
if (spObject->ObjectType() != ObjectTypes::Player)\r
{\r
Id() % Name() % ObjectTypes::GetName(spObject->ObjectType())), __FILE__, __LINE__);\r
}\r
\r
- shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
+ boost::shared_ptr<PlayerGO> spPlayer = shared_static_cast<PlayerGO>(spObject);\r
\r
switch (modifier)\r
{\r
}\r
}\r
\r
-map<Modifiers::Modifier, Range> ItemGO::Modifiers(void) const\r
+map<Modifiers::Modifier, IntRange> ItemGO::Modifiers(void) const\r
{\r
return mModifiers;\r
}\r
\r
-void ItemGO::Modifiers(const map<Modifiers::Modifier, Range> &modifiers)\r
+void ItemGO::Modifiers(const map<Modifiers::Modifier, IntRange> &modifiers)\r
{\r
mModifiers.clear();\r
mModifiers.insert(modifiers.begin(), modifiers.end());\r