]> jfr.im git - irc/gameservirc.git/blobdiff - 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
index 9370fcb316c714ec363f65238512128713557a02..646b138b176041d25fca6eb6b7e2681562379a3b 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
@@ -19,6 +21,12 @@ namespace GameServ { namespace GameLayer { namespace GameObjects {
                ItemGO();\r
                virtual ~ItemGO();\r
 \r
+               //! Property get - Number\r
+               unsigned int Number(void) const;\r
+\r
+               //! Property set - Number\r
+               void Number(const unsigned int &value);\r
+\r
                //! Property get - Name\r
                string Name(void) const;\r
                //! Property set - Name\r
@@ -35,25 +43,33 @@ 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
-               virtual ItemGO *Clone(void) const;\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
+               virtual ItemGO *Clone(void) const = 0;\r
+\r
+               virtual ObjectTypes::ObjectType ObjectType(void) const;\r
 \r
        protected:\r
+               unsigned int mNumber;\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, 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