X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FStats.cpp;h=59e4a819ee2acbdeac13c4cf3bd7008898b63eb5;hb=7b3710c47f24e64e0d01378a4564730bcb2f6ef2;hp=58d5db6d82d9bc64fe89fe2cbd16a4f12402fc80;hpb=06b6411e5dc8fc6b905530f7adbde8bd0c2bb0ea;p=l2e.git diff --git a/src/common/Stats.cpp b/src/common/Stats.cpp index 58d5db6..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,19 +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, false)); - td.AddField("dfp", FieldDescription(((char *)&s.defense) - ((char *)&s), numberId, false)); - td.AddField("str", FieldDescription(((char *)&s.strength) - ((char *)&s), numberId, false)); - td.AddField("agl", FieldDescription(((char *)&s.agility) - ((char *)&s), numberId, false)); - td.AddField("int", FieldDescription(((char *)&s.intelligence) - ((char *)&s), numberId, false)); - td.AddField("gut", FieldDescription(((char *)&s.gut) - ((char *)&s), numberId, false)); - td.AddField("mgr", FieldDescription(((char *)&s.magicResistance) - ((char *)&s), numberId, false)); + 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) {