diff options
Diffstat (limited to 'src/account-server/character.h')
-rw-r--r-- | src/account-server/character.h | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/account-server/character.h b/src/account-server/character.h index 0b697392..a9aa810b 100644 --- a/src/account-server/character.h +++ b/src/account-server/character.h @@ -47,6 +47,12 @@ struct AttributeValue double base; /**< Base value of the attribute. */ double modified; /**< Value after various modifiers have been applied. */ + + double getBase() const + { return base; } + + double getModifiedAttribute() const + { return modified; } }; struct SpecialValue @@ -62,6 +68,15 @@ struct SpecialValue unsigned currentMana; }; +struct Status +{ + Status() + : time(0) + {} + + unsigned time; +}; + /** * Stores attributes by their id. */ @@ -72,11 +87,11 @@ typedef std::map<unsigned, AttributeValue> AttributeMap; */ typedef std::map<unsigned, SpecialValue> SpecialMap; -class Character +class CharacterData { public: - Character(const std::string &name, int id = -1); + CharacterData(const std::string &name, int id = -1); /** * Gets the database id of the character. @@ -154,6 +169,9 @@ class Character void setModAttribute(unsigned id, double value) { mAttributes[id].modified = value; } + const AttributeMap &getAttributes() const + { return mAttributes; } + int getSkillSize() const { return mExperience.size(); } @@ -176,15 +194,15 @@ class Character * Get / Set a status effects */ void applyStatusEffect(int id, int time) - { mStatusEffects[id] = time; } + { mStatusEffects[id].time = time; } int getStatusEffectSize() const { return mStatusEffects.size(); } - const std::map<int, int>::const_iterator getStatusEffectBegin() const + const std::map<int, Status>::const_iterator getStatusEffectBegin() const { return mStatusEffects.begin(); } - const std::map<int, int>::const_iterator getStatusEffectEnd() const + const std::map<int, Status>::const_iterator getStatusEffectEnd() const { return mStatusEffects.end(); } /** @@ -266,8 +284,8 @@ class Character private: - Character(const Character &); - Character &operator=(const Character &); + CharacterData(const CharacterData &); + CharacterData &operator=(const CharacterData &); double getAttrBase(AttributeMap::const_iterator &it) const { return it->second.base; } @@ -283,7 +301,7 @@ class Character Point mPos; //!< Position the being is at. AttributeMap mAttributes; //!< Attributes. std::map<int, int> mExperience; //!< Skill Experience. - std::map<int, int> mStatusEffects; //!< Status Effects + std::map<int, Status> mStatusEffects; //!< Status Effects std::map<int, int> mKillCount; //!< Kill Count SpecialMap mSpecials; unsigned short mMapId; //!< Map the being is on. @@ -299,14 +317,11 @@ class Character //!< belongs to. friend class AccountHandler; friend class Storage; - // Set as a friend, but still a lot of redundant accessors. FIXME. - template< class T > - friend void serializeCharacterData(const T &data, MessageOut &msg); }; /** * Type definition for a list of Characters. */ -typedef std::map<unsigned, Character* > Characters; +typedef std::map<unsigned, CharacterData* > Characters; #endif |