]>
jfr.im git - irc/gameservirc.git/blob - gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h
f2dbc305cf2fc118fa039b18a3c5f2b1fffd8ef6
3 #include <GameServ/GameLayer/GameObjects/GameObject.h>
4 using GameServ::GameLayer::GameObjects::GameObject
;
5 #include <GameServ/Types.h>
6 using GameServ::Types::ItemTypes
;
7 using GameServ::Types::Modifiers
;
8 using GameServ::Types::Range
;
9 using GameServ::Types::ObjectTypes
;
16 namespace GameServ
{ namespace GameLayer
{ namespace GameObjects
{
18 class ItemGO
: public GameObject
24 //! Property get - Name
25 string
Name(void) const;
26 //! Property set - Name
27 void Name(const string
&value
);
29 //! Property get - Price
30 unsigned long int Price(void) const;
31 //! Property set - Price
32 void Price(const unsigned long int &value
);
34 //! Property get - Uses
36 //! Property set - Uses
37 void Uses(const int &value
);
39 //! Property get - Item Type
40 virtual ItemTypes::ItemType
Type(void) const = 0;
42 //! Property get - Modifiers
43 map
<Modifiers::Modifier
, Range
<int> > Modifiers(void) const;
45 //! Property set - Modifiers
46 void Modifiers(const map
<Modifiers::Modifier
, Range
<int> > &modifiers
);
48 //! Use item on a game object
49 virtual void Use(shared_ptr
<GameObject
> spObject
);
50 //! Undo item's last effect on a game object
51 virtual void Undo(shared_ptr
<GameObject
> spObject
);
53 virtual ItemGO
*Clone(void) const = 0;
55 virtual ObjectTypes::ObjectType
ObjectType(void) const;
59 unsigned long int mPrice
;
61 map
<Modifiers::Modifier
, Range
<int> > mModifiers
;
63 //! Base class standard modifier applier. Simply adds the modified stat to the correct stat
64 virtual void ApplyModifier(shared_ptr
<GameObject
> spObject
, const Modifiers::Modifier
&modifier
, Range
<int> r
);
65 virtual void UndoModifier(shared_ptr
<GameObject
> spObject
, const Modifiers::Modifier
&modifier
, Range
<int> r
);