X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/cce8891362b35dc33036bf5a207b0ddbfd4b4d00..998a0b4cfae5805ca17100697eb1a03f83a1a57f:/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h diff --git a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h index 9370fcb..3e23295 100644 --- a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h +++ b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ItemGO.h @@ -5,6 +5,8 @@ using GameServ::GameLayer::GameObjects::GameObject; #include using GameServ::Types::ItemTypes; using GameServ::Types::Modifiers; +using GameServ::Types::Range; +using GameServ::Types::ObjectTypes; #include using std::string; @@ -35,25 +37,32 @@ namespace GameServ { namespace GameLayer { namespace GameObjects { void Uses(const int &value); //! Property get - Item Type - ItemTypes::ItemType Type(void) const; - - //! Property set - Item Type - void Type(const ItemTypes::ItemType &value); + virtual ItemTypes::ItemType Type(void) const = 0; //! Property get - Modifiers - map Modifiers(void) const; + map Modifiers(void) const; //! Property set - Modifiers - void Modifiers(const map &modifiers); + void Modifiers(const map &modifiers); + + //! Use item on a game object + virtual void Use(shared_ptr spObject); + //! Undo item's last effect on a game object + virtual void Undo(shared_ptr spObject); - virtual ItemGO *Clone(void) const; + virtual ItemGO *Clone(void) const = 0; + + virtual ObjectTypes::ObjectType ObjectType(void) const; protected: string mName; unsigned long int mPrice; int mUses; - ItemTypes::ItemType mType; - map mModifiers; + map mModifiers; + + //! Base class standard modifier applier. Simply adds the modified stat to the correct stat + virtual void ApplyModifier(shared_ptr spObject, const Modifiers::Modifier &modifier, Range r); + virtual void UndoModifier(shared_ptr spObject, const Modifiers::Modifier &modifier, Range r); }; }}} #endif \ No newline at end of file