Store widget names rather than enumerator values

This commit is contained in:
Phillip Stephens 2015-11-19 05:16:15 -08:00
parent dcf8d492b4
commit 636fca3be1
1 changed files with 116 additions and 26 deletions

View File

@ -8,6 +8,30 @@ namespace Retro
{
namespace DNAMP1
{
static const std::vector<std::string> 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<float> 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> position;
Value<atUint32> position;
Value<atUint32> width; // width of animation cell
Value<atUint32> height; // height of animation cell
Value<float> interval; // 0.0 - 1.0
Value<float> 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];