From aa04597c5f8bb806996d604699fc8ebff6d53bdd Mon Sep 17 00:00:00 2001 From: Erik Schilling Date: Sat, 6 Apr 2013 21:36:50 +0200 Subject: Converted the Character class into a component A CharacterData was created as a proxy class in order to allow using the old serialization method. --- src/account-server/character.h | 31 +++++++++++++++++++++++-------- src/account-server/storage.cpp | 4 ++-- 2 files changed, 25 insertions(+), 10 deletions(-) (limited to 'src/account-server') diff --git a/src/account-server/character.h b/src/account-server/character.h index a6ac43e..a9aa810 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. */ @@ -76,7 +91,7 @@ class CharacterData { public: - CharacterData(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 CharacterData 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 CharacterData * 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::const_iterator getStatusEffectBegin() const + const std::map::const_iterator getStatusEffectBegin() const { return mStatusEffects.begin(); } - const std::map::const_iterator getStatusEffectEnd() const + const std::map::const_iterator getStatusEffectEnd() const { return mStatusEffects.end(); } /** @@ -283,7 +301,7 @@ class CharacterData Point mPos; //!< Position the being is at. AttributeMap mAttributes; //!< Attributes. std::map mExperience; //!< Skill Experience. - std::map mStatusEffects; //!< Status Effects + std::map mStatusEffects; //!< Status Effects std::map mKillCount; //!< Kill Count SpecialMap mSpecials; unsigned short mMapId; //!< Map the being is on. @@ -299,9 +317,6 @@ class CharacterData //!< 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); }; /** diff --git a/src/account-server/storage.cpp b/src/account-server/storage.cpp index 5275f0b..dd8cf9a 100644 --- a/src/account-server/storage.cpp +++ b/src/account-server/storage.cpp @@ -910,12 +910,12 @@ bool Storage::updateCharacter(CharacterData *character) } try { - std::map::const_iterator status_it; + std::map::const_iterator status_it; for (status_it = character->getStatusEffectBegin(); status_it != character->getStatusEffectEnd(); status_it++) { insertStatusEffect(character->getDatabaseID(), - status_it->first, status_it->second); + status_it->first, status_it->second.time); } } catch (const dal::DbSqlQueryExecFailure& e) -- cgit