summaryrefslogtreecommitdiffstats
path: root/src/serialize
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/serialize
parent16c8bad4bd1fd32cae60d15e55468d1a2be82d6e (diff)
downloadmanaserv-c8772d145ea5db993a0d9ebc78f55b977dab1973.tar.gz
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/serialize')
-rw-r--r--src/serialize/characterdata.hpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/serialize/characterdata.hpp b/src/serialize/characterdata.hpp
index a93768b..09a8658 100644
--- a/src/serialize/characterdata.hpp
+++ b/src/serialize/characterdata.hpp
@@ -21,6 +21,8 @@
#ifndef _TMWSERV_SERIALIZE_CHARACTERDATA_HPP_
#define _TMWSERV_SERIALIZE_CHARACTERDATA_HPP_
+#include <map>
+
#include "defines.h"
#include "common/inventorydata.hpp"
#include "net/messagein.hpp"
@@ -43,9 +45,13 @@ void serializeCharacterData(const T &data, MessageOut &msg)
msg.writeByte(data.getAttribute(i));
}
- for (int i = 0; i < CHAR_SKILL_NB; ++i)
+ msg.writeShort(data.getSkillSize());
+
+ std::map<int, int>::const_iterator skill_it;
+ for (skill_it = data.getSkillBegin(); skill_it != data.getSkillEnd() ; skill_it++)
{
- msg.writeLong(data.getExperience(i));
+ msg.writeShort(skill_it->first);
+ msg.writeLong(skill_it->second);
}
@@ -84,9 +90,11 @@ void deserializeCharacterData(T &data, MessageIn &msg)
data.setAttribute(i, msg.readByte());
}
- for (int i = 0; i < CHAR_SKILL_NB; ++i)
+ int skillSize = msg.readShort();
+
+ for (int i = 0; i < skillSize; ++i)
{
- data.setExperience(i, msg.readLong());
+ data.setExperience(msg.readShort(), msg.readLong());
}
data.setMapId(msg.readShort());