summaryrefslogtreecommitdiff
path: root/src/account-server
diff options
context:
space:
mode:
authorChuck Miller <shadowmil@gmail.com>2009-07-03 22:54:09 -0400
committerChuck Miller <shadowmil@gmail.com>2009-07-03 22:54:09 -0400
commitc8772d145ea5db993a0d9ebc78f55b977dab1973 (patch)
tree0817c3a21692f7b7c06917e196b042639181bcbd /src/account-server
parent16c8bad4bd1fd32cae60d15e55468d1a2be82d6e (diff)
downloadmanaserv-c8772d145ea5db993a0d9ebc78f55b977dab1973.tar.gz
manaserv-c8772d145ea5db993a0d9ebc78f55b977dab1973.tar.bz2
manaserv-c8772d145ea5db993a0d9ebc78f55b977dab1973.tar.xz
manaserv-c8772d145ea5db993a0d9ebc78f55b977dab1973.zip
Makes Skills non hard coded
It should be noted that Jax still needs to update the client Level calulation seems broken now too
Diffstat (limited to 'src/account-server')
-rw-r--r--src/account-server/character.cpp4
-rw-r--r--src/account-server/character.hpp14
-rw-r--r--src/account-server/dalstorage.cpp16
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);
}
}
} //