diff options
Diffstat (limited to 'src/account-server')
-rw-r--r-- | src/account-server/character.cpp | 4 | ||||
-rw-r--r-- | src/account-server/character.hpp | 14 | ||||
-rw-r--r-- | src/account-server/dalstorage.cpp | 16 |
3 files changed, 21 insertions, 13 deletions
diff --git a/src/account-server/character.cpp b/src/account-server/character.cpp index 0f0a261e..843bd6a2 100644 --- a/src/account-server/character.cpp +++ b/src/account-server/character.cpp @@ -40,10 +40,6 @@ Character::Character(const std::string &name, int id): { mAttributes[i] = 0; } - for (int i = 0; i < CHAR_SKILL_NB; ++i) - { - mExperience[i] = 0; - } } void Character::setAccount(Account *acc) diff --git a/src/account-server/character.hpp b/src/account-server/character.hpp index be53b9d1..d38d0211 100644 --- a/src/account-server/character.hpp +++ b/src/account-server/character.hpp @@ -23,6 +23,7 @@ #include <string> #include <vector> +#include <map> #include "defines.h" #include "point.h" @@ -105,8 +106,17 @@ class Character void setAttribute(int n, int value) { mAttributes[n - CHAR_ATTR_BEGIN] = value; } + int getSkillSize() const + { return mExperience.size(); } + + const std::map<int, int>::const_iterator getSkillBegin() const + { return mExperience.begin(); } + + const std::map<int, int>::const_iterator getSkillEnd() const + { return mExperience.end(); } + int getExperience(int skill) const - { return mExperience[skill]; } + { return mExperience.find(skill)->second; } void setExperience(int skill, int value) { mExperience[skill] = value; } @@ -169,7 +179,7 @@ class Character Account *mAccount; //!< Account owning the character. Point mPos; //!< Position the being is at. unsigned short mAttributes[CHAR_ATTR_NB]; //!< Attributes. - int mExperience[CHAR_SKILL_NB]; //!< Skill Experience. + std::map<int, int> mExperience; //!< Skill Experience. unsigned short mMapId; //!< Map the being is on. unsigned char mGender; //!< Gender of the being. unsigned char mHairStyle; //!< Hair style of the being. diff --git a/src/account-server/dalstorage.cpp b/src/account-server/dalstorage.cpp index a78f26a1..615e20f2 100644 --- a/src/account-server/dalstorage.cpp +++ b/src/account-server/dalstorage.cpp @@ -536,10 +536,11 @@ bool DALStorage::updateCharacter(Character *character, */ try { - for (unsigned int skill_id = 0; skill_id < CHAR_SKILL_NB; skill_id++) + std::map<int, int>::const_iterator skill_it; + for (skill_it = character->getSkillBegin(); + skill_it != character->getSkillEnd(); skill_it++) { - updateExperience(character->getDatabaseID(), skill_id, - character->getExperience(skill_id)); + updateExperience(character->getDatabaseID(), skill_it->first, skill_it->second); } } catch (const dal::DbSqlQueryExecFailure& e) @@ -760,11 +761,12 @@ void DALStorage::flush(Account *account) // Update the character ID. (*it)->setDatabaseID(mDb->getLastId()); - // update the characters skills - for (unsigned int skill_id = 0; skill_id < CHAR_SKILL_NB; skill_id++) + // update the characters skill + std::map<int, int>::const_iterator skill_it; + for (skill_it = (*it)->getSkillBegin(); + skill_it != (*it)->getSkillEnd(); skill_it++) { - updateExperience((*it)->getDatabaseID(), skill_id, - (*it)->getExperience(skill_id)); + updateExperience((*it)->getDatabaseID(), skill_it->first, skill_it->second); } } } // |