]> git.localhorst.tv Git - l2e.git/blobdiff - src/common/Stats.cpp
non-reference type array relocation
[l2e.git] / src / common / Stats.cpp
index 5a48b6672098f7d91c8657b5267fbb070b7f2581..59e4a819ee2acbdeac13c4cf3bd7008898b63eb5 100644 (file)
@@ -1,10 +1,3 @@
-/*
- * Stats.cpp
- *
- *  Created on: Aug 19, 2012
- *      Author: holy
- */
-
 #include "Stats.h"
 
 #include "../loader/Interpreter.h"
@@ -47,13 +40,17 @@ void Stats::CreateTypeDescription() {
        td.SetConstructor(&Construct);
        td.SetSize(sizeof(Stats));
 
-       td.AddField("atp", FieldDescription(((char *)&s.attack) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("attack points"));
-       td.AddField("dfp", FieldDescription(((char *)&s.defense) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("defense points"));
-       td.AddField("str", FieldDescription(((char *)&s.strength) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("strength"));
-       td.AddField("agl", FieldDescription(((char *)&s.agility) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("agility"));
-       td.AddField("int", FieldDescription(((char *)&s.intelligence) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("intelligence"));
-       td.AddField("gut", FieldDescription(((char *)&s.gut) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("gut (ikari factor)"));
-       td.AddField("mgr", FieldDescription(((char *)&s.magicResistance) - ((char *)&s), Interpreter::NUMBER_ID).SetDescription("magic resistance"));
+       AddFields(td, s, 0);
+}
+
+void Stats::AddFields(TypeDescription &td, const Stats &s, std::ptrdiff_t offset) {
+       td.AddField("atp", FieldDescription(((char *)&s.attack) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("attack points"));
+       td.AddField("dfp", FieldDescription(((char *)&s.defense) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("defense points"));
+       td.AddField("str", FieldDescription(((char *)&s.strength) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("strength"));
+       td.AddField("agl", FieldDescription(((char *)&s.agility) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("agility"));
+       td.AddField("int", FieldDescription(((char *)&s.intelligence) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("intelligence"));
+       td.AddField("gut", FieldDescription(((char *)&s.gut) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("gut (ikari factor)"));
+       td.AddField("mgr", FieldDescription(((char *)&s.magicResistance) - ((char *)&s) - offset, Interpreter::NUMBER_ID).SetDescription("magic resistance"));
 }
 
 void Stats::Construct(void *data) {