From 636fca3be1ad815858c9a6a9cf30495a16bad58b Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Thu, 19 Nov 2015 05:16:15 -0800 Subject: [PATCH] Store widget names rather than enumerator values --- DataSpec/DNAMP1/SCAN.hpp | 142 ++++++++++++++++++++++++++++++++------- 1 file changed, 116 insertions(+), 26 deletions(-) diff --git a/DataSpec/DNAMP1/SCAN.hpp b/DataSpec/DNAMP1/SCAN.hpp index 8064f799d..5a8a25f94 100644 --- a/DataSpec/DNAMP1/SCAN.hpp +++ b/DataSpec/DNAMP1/SCAN.hpp @@ -8,6 +8,30 @@ namespace Retro { namespace DNAMP1 { +static const std::vector PaneNames = +{ + "imagepane_pane0", + "imagepane_pane1", + "imagepane_pane2", + "imagepane_pane3", + "imagepane_pane01", + "imagepane_pane12", + "imagepane_pane23", + "imagepane_pane012", + "imagepane_pane123", + "imagepane_pane0123", + "imagepane_pane4", + "imagepane_pane5", + "imagepane_pane6", + "imagepane_pane7", + "imagepane_pane45", + "imagepane_pane56", + "imagepane_pane67", + "imagepane_pane456", + "imagepane_pane567", + "imagepane_pane4567" +}; + struct SCAN : BigYAML { DECL_YAML @@ -35,38 +59,104 @@ struct SCAN : BigYAML struct Texture : BigYAML { - DECL_YAML + Delete __delete; UniqueID32 texture; Value appearanceRange; - enum Position - { - Pane0, - Pane1, - Pane2, - Pane3, - Pane01, - Pane12, - Pane23, - Pane012, - Pane123, - Pane0123, - Pane4, - Pane5, - Pane6, - Pane7, - Pane45, - Pane56, - Pane67, - Pane456, - Pane567, - Pane4567, - Invalid = -1 - }; - Value position; + Value position; Value width; // width of animation cell Value height; // height of animation cell Value interval; // 0.0 - 1.0 Value fadeDuration; // 0.0 - 1.0 + + void read(Athena::io::IStreamReader& __dna_reader) + { + /* texture */ + texture.read(__dna_reader); + /* appearanceRange */ + appearanceRange = __dna_reader.readFloatBig(); + /* position */ + position = __dna_reader.readUint32Big(); + /* width */ + width = __dna_reader.readUint32Big(); + /* height */ + height = __dna_reader.readUint32Big(); + /* interval */ + interval = __dna_reader.readFloatBig(); + /* fadeDuration */ + fadeDuration = __dna_reader.readFloatBig(); + } + + void write(Athena::io::IStreamWriter& __dna_writer) const + { + /* texture */ + texture.write(__dna_writer); + /* appearanceRange */ + __dna_writer.writeFloatBig(appearanceRange); + /* position */ + __dna_writer.writeUint32Big(position); + /* width */ + __dna_writer.writeUint32Big(width); + /* height */ + __dna_writer.writeUint32Big(height); + /* interval */ + __dna_writer.writeFloatBig(interval); + /* fadeDuration */ + __dna_writer.writeFloatBig(fadeDuration); + } + + void fromYAML(Athena::io::YAMLDocReader& __dna_docin) + { + /* texture */ + __dna_docin.enumerate("texture", texture); + /* appearanceRange */ + appearanceRange = __dna_docin.readFloat("appearanceRange"); + /* position */ + std::string tmp = __dna_docin.readString("position"); + + auto idx = std::find(PaneNames.begin(), PaneNames.end(), tmp); + if (idx != PaneNames.end()) + position = idx - PaneNames.begin(); + else + position = -1; + + /* width */ + width = __dna_docin.readUint32("width"); + /* height */ + height = __dna_docin.readUint32("height"); + /* interval */ + interval = __dna_docin.readFloat("interval"); + /* fadeDuration */ + fadeDuration = __dna_docin.readFloat("fadeDuration"); + } + + void toYAML(Athena::io::YAMLDocWriter& __dna_docout) const + { + /* texture */ + __dna_docout.enumerate("texture", texture); + /* appearanceRange */ + __dna_docout.writeFloat("appearanceRange", appearanceRange); + /* position */ + if (position != -1) + __dna_docout.writeString("position", PaneNames.at(position)); + else + __dna_docout.writeString("position", "undefined"); + /* width */ + __dna_docout.writeUint32("width", width); + /* height */ + __dna_docout.writeUint32("height", height); + /* interval */ + __dna_docout.writeFloat("interval", interval); + /* fadeDuration */ + __dna_docout.writeFloat("fadeDuration", fadeDuration); + } + + const char* DNAType() { return "Retro::DNAMP1::SCAN::Texture"; } + size_t binarySize(size_t __isz) const + { + __isz = texture.binarySize(__isz); + return __isz + 24; + } + }; Texture textures[4];