-
-void Interpreter::ReadObject(const Definition &dfn) {
- if (dfn.TypeName() == "BattleResources") {
- battle::Resources *res(new battle::Resources);
- int index(battleResources.size());
- battleResources.push_back(res);
- ReadBattleResources(*res, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, BATTLE_RESOURCES, index)));
- } else if (dfn.TypeName() == "ComplexAnimation") {
- ComplexAnimation *animation(new ComplexAnimation);
- int index(complexAnimations.size());
- complexAnimations.push_back(animation);
- ReadComplexAnimation(*animation, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, COMPLEX_ANIMATION, index)));
- } else if (dfn.TypeName() == "Font") {
- Font *font(new Font);
- int index(fonts.size());
- fonts.push_back(font);
- ReadFont(*font, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, FONT, index)));
- } else if (dfn.TypeName() == "Frame") {
- Frame *frame(new Frame);
- int index(frames.size());
- frames.push_back(frame);
- ReadFrame(*frame, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, FRAME, index)));
- } else if (dfn.TypeName() == "Gauge") {
- Gauge *gauge(new Gauge);
- int index(gauges.size());
- gauges.push_back(gauge);
- ReadGauge(*gauge, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, GAUGE, index)));
- } else if (dfn.TypeName() == "Hero") {
- Hero *hero(new Hero);
- int index(heroes.size());
- heroes.push_back(hero);
- ReadHero(*hero, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, HERO, index)));
- } else if (dfn.TypeName() == "Ikari") {
- Ikari *ikari(new Ikari);
- int index(ikaris.size());
- ikaris.push_back(ikari);
- ReadIkari(*ikari, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, IKARI, index)));
- } else if (dfn.TypeName() == "Item") {
- Item *item(new Item);
- int index(items.size());
- items.push_back(item);
- ReadItem(*item, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, ITEM, index)));
- } else if (dfn.TypeName() == "MenuProperties") {
- graphics::MenuProperties *mprops(new graphics::MenuProperties);
- int index(menuProperties.size());
- menuProperties.push_back(mprops);
- ReadMenuProperties(*mprops, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, MENU_PROPERTIES, index)));
- } else if (dfn.TypeName() == "Monster") {
- Monster *monster(new Monster);
- int index(monsters.size());
- monsters.push_back(monster);
- ReadMonster(*monster, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, MONSTER, index)));
- } else if (dfn.TypeName() == "PartyLayout") {
- PartyLayout *layout(new PartyLayout);
- int index(partyLayouts.size());
- partyLayouts.push_back(layout);
- ReadPartyLayout(*layout, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, PARTY_LAYOUT, index)));
- } else if (dfn.TypeName() == "SimpleAnimation") {
- SimpleAnimation *animation(new SimpleAnimation);
- int index(simpleAnimations.size());
- simpleAnimations.push_back(animation);
- ReadSimpleAnimation(*animation, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, SIMPLE_ANIMATION, index)));
- } else if (dfn.TypeName() == "Spell") {
- Spell *spell(new Spell);
- int index(spells.size());
- spells.push_back(spell);
- ReadSpell(*spell, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, SPELL, index)));
- } else if (dfn.TypeName() == "Sprite") {
- Sprite *sprite(new Sprite);
- int index(sprites.size());
- sprites.push_back(sprite);
- ReadSprite(*sprite, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, SPRITE, index)));
- } else if (dfn.TypeName() == "TargetingMode") {
- TargetingMode *mode(new TargetingMode);
- int index(targetingModes.size());
- targetingModes.push_back(mode);
- ReadTargetingMode(*mode, *dfn.GetProperties());
- parsedDefinitions.insert(make_pair(dfn.Identifier(), ParsedDefinition(&dfn, TARGETING_MODE, index)));
- } else {
- throw Error("unhandled object type: " + dfn.TypeName());
- }
-}
-
-
-void Interpreter::ReadBattleResources(battle::Resources &res, const PropertyList &props) {
- for (PropertyList::ConstIterator i(props.Begin()), end(props.End()); i != end; ++i) {
- if (i->first == "swapCursor") {
- res.swapCursor = GetSprite(*i->second);
- } else if (i->first == "moveIcons") {
- res.moveIcons = GetSprite(*i->second);
- } else if (i->first == "attackIcons") {
- res.attackIcons = GetSprite(*i->second);
- } else if (i->first == "attackChoiceIcons") {
- res.attackChoiceIcons = GetSprite(*i->second);
- } else if (i->first == "titleFrame") {
- res.titleFrame = GetFrame(*i->second);
- } else if (i->first == "titleFont") {
- res.titleFont = GetFont(*i->second);
- } else if (i->first == "heroTagFrame") {
- res.heroTagFrame = GetFrame(*i->second);
- } else if (i->first == "activeHeroTagFrame") {
- res.activeHeroTagFrame = GetFrame(*i->second);
- } else if (i->first == "smallHeroTagFrame") {
- res.smallHeroTagFrame = GetFrame(*i->second);
- } else if (i->first == "lastSmallHeroTagFrame") {
- res.lastSmallHeroTagFrame = GetFrame(*i->second);
- } else if (i->first == "heroTagFont") {
- res.heroTagFont = GetFont(*i->second);
- } else if (i->first == "heroTagLabels") {
- res.heroTagLabels = GetSprite(*i->second);
- } else if (i->first == "healthGauge") {
- res.healthGauge = GetGauge(*i->second);
- } else if (i->first == "manaGauge") {
- res.manaGauge = GetGauge(*i->second);
- } else if (i->first == "ikariGauge") {
- res.ikariGauge = GetGauge(*i->second);
- } else if (i->first == "selectFrame") {
- res.selectFrame = GetFrame(*i->second);
- } else if (i->first == "normalFont") {
- res.normalFont = GetFont(*i->second);
- } else if (i->first == "disabledFont") {
- res.disabledFont = GetFont(*i->second);
- } else if (i->first == "menuCursor") {
- res.menuCursor = GetSprite(*i->second);
- } else if (i->first == "weaponTargetCursor") {
- res.weaponTargetCursor = GetSprite(*i->second);
- } else if (i->first == "magicTargetCursor") {
- res.magicTargetCursor = GetSprite(*i->second);
- } else if (i->first == "itemTargetCursor") {
- res.itemTargetCursor = GetSprite(*i->second);
- } else if (i->first == "spellMenuHeadline") {
- res.spellMenuHeadline = GetString(*i->second);
- } else if (i->first == "spellMenuProperties") {
- res.spellMenuProperties = GetMenuProperties(*i->second);
- } else if (i->first == "itemMenuHeadline") {
- res.itemMenuHeadline = GetString(*i->second);
- } else if (i->first == "itemMenuProperties") {
- res.itemMenuProperties = GetMenuProperties(*i->second);
- } else if (i->first == "ikariMenuHeadline") {
- res.ikariMenuHeadline = GetString(*i->second);
- } else if (i->first == "ikariMenuProperties") {
- res.ikariMenuProperties = GetMenuProperties(*i->second);
- } else if (i->first == "noEquipmentText") {
- res.noEquipmentText = GetString(*i->second);
- } else if (i->first == "escapeText") {
- res.escapeText = GetString(*i->second);
- } else if (i->first == "numberAnimationPrototype") {
- res.numberAnimationPrototype = GetAnimation(*i->second);
- } else if (i->first == "bigNumberSprite") {
- res.bigNumberSprite = GetSprite(*i->second);
- } else if (i->first == "greenNumberSprite") {
- res.greenNumberSprite = GetSprite(*i->second);
- } else if (i->first == "weaponMenuIcon") {
- res.weaponMenuIcon = GetSprite(*i->second);
- } else if (i->first == "armorMenuIcon") {
- res.armorMenuIcon = GetSprite(*i->second);
- } else if (i->first == "shieldMenuIcon") {
- res.shieldMenuIcon = GetSprite(*i->second);
- } else if (i->first == "helmetMenuIcon") {
- res.helmetMenuIcon = GetSprite(*i->second);
- } else if (i->first == "ringMenuIcon") {
- res.ringMenuIcon = GetSprite(*i->second);
- } else if (i->first == "jewelMenuIcon") {
- res.jewelMenuIcon = GetSprite(*i->second);
- } else if (i->first == "levelLabelCol") {
- res.levelLabelCol = GetNumber(*i->second);
- } else if (i->first == "levelLabelRow") {
- res.levelLabelRow = GetNumber(*i->second);
- } else if (i->first == "healthLabelCol") {
- res.healthLabelCol = GetNumber(*i->second);
- } else if (i->first == "healthLabelRow") {
- res.healthLabelRow = GetNumber(*i->second);
- } else if (i->first == "manaLabelCol") {
- res.manaLabelCol = GetNumber(*i->second);
- } else if (i->first == "manaLabelRow") {
- res.manaLabelRow = GetNumber(*i->second);
- } else if (i->first == "moveLabelCol") {
- res.moveLabelCol = GetNumber(*i->second);
- } else if (i->first == "moveLabelRow") {
- res.moveLabelRow = GetNumber(*i->second);
- } else if (i->first == "ikariLabelCol") {
- res.ikariLabelCol = GetNumber(*i->second);
- } else if (i->first == "ikariLabelRow") {
- res.ikariLabelRow = GetNumber(*i->second);
- } else if (i->first == "heroesBgColor") {
- res.heroesBgColor = GetColor(*i->second);