X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FStats.cpp;h=59e4a819ee2acbdeac13c4cf3bd7008898b63eb5;hb=b9e715649b41cb69ea1b2d2a588522541eb87b46;hp=a31d7b553fff45b671ceee08447e2423276d1599;hpb=4bc70f5311dcbcca4e6b9e852bbcb19602f50eeb;p=l2e.git diff --git a/src/common/Stats.cpp b/src/common/Stats.cpp index a31d7b5..59e4a81 100644 --- a/src/common/Stats.cpp +++ b/src/common/Stats.cpp @@ -1,15 +1,10 @@ -/* - * Stats.cpp - * - * Created on: Aug 19, 2012 - * Author: holy - */ - #include "Stats.h" +#include "../loader/Interpreter.h" #include "../loader/TypeDescription.h" using loader::FieldDescription; +using loader::Interpreter; using loader::TypeDescription; namespace common { @@ -40,20 +35,22 @@ Stats::Stats(Uint16 attack, Uint16 defense, Uint16 strength, Uint16 agility, Uin void Stats::CreateTypeDescription() { Stats s; - int numberId(TypeDescription::GetTypeId("Number")); - - TypeDescription &td(TypeDescription::CreateOrGet("Stats")); + TypeDescription &td(TypeDescription::Create(TYPE_ID, "Stats")); td.SetDescription("Attributes of a battle's participant."); td.SetConstructor(&Construct); td.SetSize(sizeof(Stats)); - td.AddField("atp", FieldDescription(((char *)&s.attack) - ((char *)&s), numberId).SetDescription("attack points")); - td.AddField("dfp", FieldDescription(((char *)&s.defense) - ((char *)&s), numberId).SetDescription("defense points")); - td.AddField("str", FieldDescription(((char *)&s.strength) - ((char *)&s), numberId).SetDescription("strength")); - td.AddField("agl", FieldDescription(((char *)&s.agility) - ((char *)&s), numberId).SetDescription("agility")); - td.AddField("int", FieldDescription(((char *)&s.intelligence) - ((char *)&s), numberId).SetDescription("intelligence")); - td.AddField("gut", FieldDescription(((char *)&s.gut) - ((char *)&s), numberId).SetDescription("gut (ikari factor)")); - td.AddField("mgr", FieldDescription(((char *)&s.magicResistance) - ((char *)&s), numberId).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) {