summaryrefslogtreecommitdiff
path: root/src/account-server/character.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/account-server/character.h')
-rw-r--r--src/account-server/character.h39
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