summaryrefslogtreecommitdiffstats
path: root/src/account-server
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2013-04-06 21:36:50 +0200
committerErik Schilling <ablu.erikschilling@googlemail.com>2013-04-11 13:43:00 +0200
commitaa04597c5f8bb806996d604699fc8ebff6d53bdd (patch)
tree20e6a79a873605b62c80011fd5c80351f60df6fb /src/account-server
parentd95fccfca8575d8fb06988e558a338e37776961a (diff)
downloadmanaserv-aa04597c5f8bb806996d604699fc8ebff6d53bdd.tar.gz
manaserv-aa04597c5f8bb806996d604699fc8ebff6d53bdd.tar.xz
manaserv-aa04597c5f8bb806996d604699fc8ebff6d53bdd.zip
Converted the Character class into a component
A CharacterData was created as a proxy class in order to allow using the old serialization method.
Diffstat (limited to 'src/account-server')
-rw-r--r--src/account-server/character.h31
-rw-r--r--src/account-server/storage.cpp4
2 files changed, 25 insertions, 10 deletions
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<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(); }
/**
@@ -283,7 +301,7 @@ class CharacterData
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,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<int, int>::const_iterator status_it;
+ std::map<int, Status>::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)