10#include "lcf/ldb/reader.h"
11#include "lcf/ldb/chunks.h"
19 static void ReadLcf(rpg::Equipment& ref, LcfReader& stream, uint32_t length);
20 static void WriteLcf(
const rpg::Equipment& ref, LcfWriter& stream);
21 static int LcfSize(
const rpg::Equipment& ref, LcfWriter& stream);
22 static void WriteXml(
const rpg::Equipment& ref, XmlWriter& stream);
23 static void BeginXml(rpg::Equipment& ref, XmlReader& stream);
31 Log::Warning(
"Equipment has incorrect size %" PRIu32
" (expected 10)", length);
33 LcfReader::Chunk chunk_info;
35 chunk_info.length = length;
37 stream.Skip(chunk_info,
"Equipment");
42 stream.Read(ref.weapon_id);
43 stream.Read(ref.shield_id);
44 stream.Read(ref.armor_id);
45 stream.Read(ref.helmet_id);
46 stream.Read(ref.accessory_id);
50 stream.Write(ref.weapon_id);
51 stream.Write(ref.shield_id);
52 stream.Write(ref.armor_id);
53 stream.Write(ref.helmet_id);
54 stream.Write(ref.accessory_id);
62 stream.BeginElement(
"Equipment");
63 stream.WriteNode<int16_t>(
"weapon_id", ref.weapon_id);
64 stream.WriteNode<int16_t>(
"shield_id", ref.shield_id);
65 stream.WriteNode<int16_t>(
"armor_id", ref.armor_id);
66 stream.WriteNode<int16_t>(
"helmet_id", ref.helmet_id);
67 stream.WriteNode<int16_t>(
"accessory_id", ref.accessory_id);
68 stream.EndElement(
"Equipment");
78 if (strcmp(name,
"weapon_id") == 0)
80 else if (strcmp(name,
"shield_id") == 0)
82 else if (strcmp(name,
"armor_id") == 0)
84 else if (strcmp(name,
"helmet_id") == 0)
86 else if (strcmp(name,
"accessory_id") == 0)
89 Log::Error(
"XML: Unrecognized field '%s'", name);
98 XmlReader::Read(*
field, data);
void CharacterData(XmlReader &, const std::string &data)
EquipmentXmlHandler(rpg::Equipment &ref)
void StartElement(XmlReader &, const char *name, const char **)
void EndElement(XmlReader &, const char *)
void Warning(const char *fmt,...) LIKE_PRINTF
void Error(const char *fmt,...) LIKE_PRINTF
static void ReadLcf(rpg::Equipment &ref, LcfReader &stream, uint32_t length)
static void ReadLcf(T &ref, LcfReader &stream, uint32_t length)
static void WriteXml(const T &ref, XmlWriter &stream)
static void BeginXml(T &ref, XmlReader &stream)
static void WriteLcf(const T &ref, LcfWriter &stream)
static int LcfSize(const T &ref, LcfWriter &stream)