]> jfr.im git - irc/gameservirc.git/blame - gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h
Scrapping work on the File DAOs and going straight for MySQL for now. The file based...
[irc/gameservirc.git] / gameserv-2.0 / libgameservgldl / include / GameServ / GameLayer / GameObjects / ItemGO.h
CommitLineData
4534c364 1#ifndef __GS__ITEM_H__\r
2#define __GS__ITEM_H__\r
3#include <GameServ/GameLayer/GameObjects/GameObject.h>\r
4using GameServ::GameLayer::GameObjects::GameObject;\r
e0d3cb09 5#include <GameServ/Types.h>\r
6using GameServ::Types::ItemTypes;\r
cce88913 7using GameServ::Types::Modifiers;\r
8e6e952d 8using GameServ::Types::Range;\r
1134c368 9using GameServ::Types::ObjectTypes;\r
4534c364 10\r
11#include <string>\r
12using std::string;\r
cce88913 13#include <map>\r
14using std::map;\r
4534c364 15\r
551b6a1d 16namespace GameServ { namespace GameLayer { namespace GameObjects {\r
17\r
4534c364 18 class ItemGO : public GameObject\r
19 {\r
20 public:\r
21 ItemGO();\r
4534c364 22 virtual ~ItemGO();\r
23\r
24f452e8 24 //! Property get - Number\r
25 unsigned int Number(void) const;\r
26\r
27 //! Property set - Number\r
28 void Number(const unsigned int &value);\r
29\r
4534c364 30 //! Property get - Name\r
31 string Name(void) const;\r
32 //! Property set - Name\r
33 void Name(const string &value);\r
34\r
35 //! Property get - Price\r
36 unsigned long int Price(void) const;\r
37 //! Property set - Price\r
38 void Price(const unsigned long int &value);\r
39\r
40 //! Property get - Uses\r
41 int Uses(void) const;\r
42 //! Property set - Uses\r
43 void Uses(const int &value);\r
44\r
45 //! Property get - Item Type\r
1134c368 46 virtual ItemTypes::ItemType Type(void) const = 0;\r
4534c364 47\r
48 //! Property get - Modifiers\r
fadef98f 49 map<Modifiers::Modifier, Range<int> > Modifiers(void) const;\r
cce88913 50\r
4534c364 51 //! Property set - Modifiers\r
fadef98f 52 void Modifiers(const map<Modifiers::Modifier, Range<int> > &modifiers);\r
4534c364 53\r
1134c368 54 //! Use item on a game object\r
55 virtual void Use(shared_ptr<GameObject> spObject);\r
56 //! Undo item's last effect on a game object\r
57 virtual void Undo(shared_ptr<GameObject> spObject);\r
58\r
59 virtual ItemGO *Clone(void) const = 0;\r
23f6e925 60\r
1134c368 61 virtual ObjectTypes::ObjectType ObjectType(void) const;\r
4534c364 62\r
551b6a1d 63 protected:\r
24f452e8 64 unsigned int mNumber;\r
4534c364 65 string mName;\r
66 unsigned long int mPrice;\r
67 int mUses;\r
fadef98f 68 map<Modifiers::Modifier, Range<int> > mModifiers;\r
23f6e925 69\r
70 //! Base class standard modifier applier. Simply adds the modified stat to the correct stat\r
fadef98f 71 virtual void ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
72 virtual void UndoModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
4534c364 73 };\r
74}}}\r
75#endif