]> jfr.im git - irc/gameservirc.git/blame - gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h
I implemented a mock forest driver and found a problem in using the singleton design...
[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
24 //! Property get - Name\r
25 string Name(void) const;\r
26 //! Property set - Name\r
27 void Name(const string &value);\r
28\r
29 //! Property get - Price\r
30 unsigned long int Price(void) const;\r
31 //! Property set - Price\r
32 void Price(const unsigned long int &value);\r
33\r
34 //! Property get - Uses\r
35 int Uses(void) const;\r
36 //! Property set - Uses\r
37 void Uses(const int &value);\r
38\r
39 //! Property get - Item Type\r
1134c368 40 virtual ItemTypes::ItemType Type(void) const = 0;\r
4534c364 41\r
42 //! Property get - Modifiers\r
fadef98f 43 map<Modifiers::Modifier, Range<int> > Modifiers(void) const;\r
cce88913 44\r
4534c364 45 //! Property set - Modifiers\r
fadef98f 46 void Modifiers(const map<Modifiers::Modifier, Range<int> > &modifiers);\r
4534c364 47\r
1134c368 48 //! Use item on a game object\r
49 virtual void Use(shared_ptr<GameObject> spObject);\r
50 //! Undo item's last effect on a game object\r
51 virtual void Undo(shared_ptr<GameObject> spObject);\r
52\r
53 virtual ItemGO *Clone(void) const = 0;\r
23f6e925 54\r
1134c368 55 virtual ObjectTypes::ObjectType ObjectType(void) const;\r
4534c364 56\r
551b6a1d 57 protected:\r
4534c364 58 string mName;\r
59 unsigned long int mPrice;\r
60 int mUses;\r
fadef98f 61 map<Modifiers::Modifier, Range<int> > mModifiers;\r
23f6e925 62\r
63 //! Base class standard modifier applier. Simply adds the modified stat to the correct stat\r
fadef98f 64 virtual void ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
65 virtual void UndoModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
4534c364 66 };\r
67}}}\r
68#endif