]> jfr.im git - irc/gameservirc.git/blobdiff - 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
index a147a8992a08afc0336e77aa85408552894f845d..f2dbc305cf2fc118fa039b18a3c5f2b1fffd8ef6 100644 (file)
@@ -5,6 +5,8 @@ using GameServ::GameLayer::GameObjects::GameObject;
 #include <GameServ/Types.h>\r
 using GameServ::Types::ItemTypes;\r
 using GameServ::Types::Modifiers;\r
+using GameServ::Types::Range;\r
+using GameServ::Types::ObjectTypes;\r
 \r
 #include <string>\r
 using std::string;\r
@@ -35,31 +37,32 @@ namespace GameServ { namespace GameLayer { namespace GameObjects {
                void Uses(const int &value);\r
 \r
                //! Property get - Item Type\r
-               ItemTypes::ItemType Type(void) const;\r
-\r
-               //! Property set - Item Type\r
-               void Type(const ItemTypes::ItemType &value);\r
+               virtual ItemTypes::ItemType Type(void) const = 0;\r
 \r
                //! Property get - Modifiers\r
-               map<Modifiers::Modifier, int> Modifiers(void) const;\r
+               map<Modifiers::Modifier, Range<int> > Modifiers(void) const;\r
 \r
                //! Property set - Modifiers\r
-               void Modifiers(const map<Modifiers::Modifier, int> &modifiers);\r
+               void Modifiers(const map<Modifiers::Modifier, Range<int> > &modifiers);\r
+\r
+               //! Use item on a game object\r
+               virtual void Use(shared_ptr<GameObject> spObject);\r
+               //! Undo item's last effect on a game object\r
+               virtual void Undo(shared_ptr<GameObject> spObject);\r
 \r
-               //! Use item on a player.\r
-               void Use(shared_ptr<GameObject> spPlayer);\r
+               virtual ItemGO *Clone(void) const = 0;\r
 \r
-               virtual ItemGO *Clone(void) const;\r
+               virtual ObjectTypes::ObjectType ObjectType(void) const;\r
 \r
        protected:\r
                string mName;\r
                unsigned long int mPrice;\r
                int mUses;\r
-               ItemTypes::ItemType mType;\r
-               map<Modifiers::Modifier, int> mModifiers;\r
+               map<Modifiers::Modifier, Range<int> > mModifiers;\r
 \r
                //! Base class standard modifier applier. Simply adds the modified stat to the correct stat\r
-               virtual void ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, const int &num);\r
+               virtual void ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
+               virtual void UndoModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range<int> r);\r
        };\r
 }}}\r
 #endif
\ No newline at end of file