11#include "lcf/rpg/trooppagecondition.h"
12#include "lcf/rpg/eventpagecondition.h"
13#include "lcf/rpg/terrain.h"
14#include "lcf/rpg/savepicture.h"
32 for (
size_t i = 0; i < num_flags; ++i) {
35 if (byteidx >=
int(length)) {
41 obj.flags[i] = (
byte >> bitidx) & 1;
46 for (
size_t i = 0; i < obj.flags.size(); ++i) {
47 x |= (obj.flags[i] << i);
55 const bool db_is2k3 = stream.Is2k3();
59 for (
size_t i = 0; i < num_flags; ++i) {
60 const auto flag_is2k3 = flags_is2k3[i];
61 if (!db_is2k3 && flag_is2k3) {
64 byte |= (obj.flags[i] << bitidx);
81 const bool db_is2k3 = stream.Is2k3();
83 for (
size_t i = 0; i < num_flags; ++i) {
84 const auto flag_is2k3 = flags_is2k3[i];
85 if (!db_is2k3 && flag_is2k3) {
90 auto num_bytes = (num_bits + 7) / 8;
96 const bool db_is2k3 = stream.Is2k3();
97 stream.BeginElement(name);
98 for (
size_t i = 0; i < num_flags; ++i) {
99 const auto flag_is2k3 = flags_is2k3[i];
100 if (!db_is2k3 && flag_is2k3) {
103 const auto* flag_name = flag_names[i];
104 stream.WriteNode<
bool>(flag_name, obj.flags[i]);
106 stream.EndElement(name);
118 void StartElement(XmlReader& stream,
const char* name,
const char** ) {
121 stream.Error(
"Unrecognized field '%s'", name);
132 XmlReader::Read<bool>(*
field, data);
143#pragma warning (disable : 4661)
static void BeginXml(S &obj, XmlReader &stream)
static void ReadLcf(S &obj, LcfReader &stream, uint32_t length)
static void WriteXml(const S &obj, XmlWriter &stream)
static int idx(const char *tag)
static int LcfSize(const S &obj, LcfWriter &stream)
static void WriteLcf(const S &obj, LcfWriter &stream)
void CharacterData(XmlReader &, const std::string &data)
void StartElement(XmlReader &stream, const char *name, const char **)
void EndElement(XmlReader &, const char *)