void MapReader::Visit (XmlReader& visitable) { BaseReaderVisitor::Visit (visitable); auto reader = visitable.ChangeRoot (xmlRootNodeName_); map_.SetID ( reader->ReadID ( XmlHelper::GetAttrNodeName (DEFAULT_XML_ID_NODE_NAME))); map_.SetName (reader->ReadString (DEFAULT_XML_NAME_NODE_NAME)); /// @todo Integrate CollidableArea in xml loading (remove inclusion). GridCollidableArea* gridCollidableArea = new GridCollidableArea (); gridCollidableArea->SetSegmentCount (10, 10); map_.SetCollidableArea (gridCollidableArea); map_.SetSize ( reader->ReadUInt (DEFAULT_XML_WIDTH_NODE_NAME), reader->ReadUInt (DEFAULT_XML_HEIGHT_NODE_NAME)); auto staticObjectsReader = reader->ChangeRoot ("staticObjects"); ReadStaticObjects (*staticObjectsReader); auto dynamicObjectsReader = reader->ChangeRoot ("dynamicObjects"); ReadDynamicObjects (*dynamicObjectsReader); }
void SpriteReader::Visit (XmlReader& visitable) { auto reader = visitable.ChangeRoot (xmlRootNodeName_); reader = reader->ChangeRoot (DEFAULT_XML_TEXTURE_NODE_NAME); sprite_.SetTexture ( ObjectFactory::Instance ().Create<Texture> ( "Texture", reader->ReadID ( XmlHelper::GetAttrNodeName (DEFAULT_XML_TEXTURE_ID_NODE_NAME)))); }
void DialogNodeReader::Visit (XmlReader& visitable) { BaseReaderVisitor::Visit (visitable); auto reader = visitable.ChangeRoot (xmlRootNodeName_); XmlReaderCollection entryReaders; reader->ReadNodes ("entry", entryReaders); for (const auto& entryReader : entryReaders) { IGameRequirement* requirement = nullptr; if (entryReader->NodeExists ("requirement")) { } IGameAction* action = nullptr; if (entryReader->NodeExists ("action")) { } IDialogNode* nextNode = nullptr; if (entryReader->NodeExists ("nextNode")) { auto nextNodeReader = entryReader->ChangeRoot ("nextNode"); String nextNodeType = nextNodeReader->ReadString ("dialogNodeType"); nextNode = ObjectFactory::Instance ().Create<IDialogNode> ( nextNodeType, *nextNodeReader, nextNodeType); } DialogNodeEntry* entry = new DialogNodeEntry ( requirement, action, nextNode); { auto messagesReader = entryReader->ChangeRoot ("messages"); XmlReaderCollection messageReaders; messagesReader->ReadNodes ("entry", messageReaders); for (const auto& messageReader : messageReaders) entry->AddMessage (new DialogMessage (messageReader->ReadString ())); } dialogNode_.AddEntry (entry); } }
void SkillInfoReader::Visit (XmlReader& visitable) { auto reader = visitable.ChangeRoot (xmlRootNodeName_); skillInfo_.SetID ( reader->ReadID ( XmlHelper::GetAttrNodeName (DEFAULT_XML_ID_NODE_NAME))); skillInfo_.SetName (reader->ReadString (DEFAULT_XML_NAME_NODE_NAME)); skillInfo_.SetDescription ( reader->ReadString ( DEFAULT_XML_DESCRIPTION_NODE_NAME)); skillInfo_.SetPower (reader->ReadInt (DEFAULT_XML_POWER_NODE_NAME)); skillInfo_.SetPP (reader->ReadInt (DEFAULT_XML_PP_NODE_NAME)); skillInfo_.SetMaxPP (reader->ReadInt (DEFAULT_XML_MAX_PP_NODE_NAME)); skillInfo_.SetAccuracy (reader->ReadInt (DEFAULT_XML_ACCURACY_NODE_NAME)); // Type of the skill skillInfo_.SetType ( TypeInfo (ID (reader->ReadInt (DEFAULT_XML_TYPE_NODE_NAME)))); skillInfo_.SetCategory (reader->ReadInt (DEFAULT_XML_CATEGORY_NODE_NAME)); skillInfo_.SetTarget (reader->ReadInt (DEFAULT_XML_TARGET_NODE_NAME)); skillInfo_.SetEffect (reader->ReadInt (DEFAULT_XML_EFFECT_NODE_NAME)); skillInfo_.SetUse (reader->ReadInt (DEFAULT_XML_USE_NODE_NAME)); skillInfo_.SetPriority (reader->ReadInt (DEFAULT_XML_PRIORITY_NODE_NAME)); }
void PokemonInfoReader::Visit (XmlReader& visitable) { auto reader = visitable.ChangeRoot (xmlRootNodeName_); pokemonInfo_.SetID ( reader->ReadID ( XmlHelper::GetAttrNodeName (DEFAULT_XML_ID_NODE_NAME))); pokemonInfo_.SetName (reader->ReadString (DEFAULT_XML_NAME_NODE_NAME)); pokemonInfo_.SetDescription ( reader->ReadString (DEFAULT_XML_DESCRIPTION_NODE_NAME)); pokemonInfo_.SetSpecies ( reader->ReadString (DEFAULT_XML_SPECIES_NODE_NAME)); pokemonInfo_.SetHeight ( reader->ReadFloat (DEFAULT_XML_HEIGHT_NODE_NAME)); pokemonInfo_.SetWeight ( reader->ReadFloat (DEFAULT_XML_WEIGHT_NODE_NAME)); pokemonInfo_.SetRarity ( reader->ReadInt (DEFAULT_XML_RARITY_NODE_NAME)); pokemonInfo_.SetGenderProbability ( reader->ReadFloat (DEFAULT_XML_GENDER_NODE_NAME)); pokemonInfo_.SetExperience ( reader->ReadInt (DEFAULT_XML_EXPERIENCE_NODE_NAME)); pokemonInfo_.SetExperienceType (StringHelper::Parse<ExperienceType> (reader->ReadString (DEFAULT_XML_EXPERIENCE_TYPE_NODE_NAME))); auto statsReader = reader->ChangeRoot (DEFAULT_XML_BASE_STATS_NODE_NAME); pokemonInfo_.SetHitPoint ( statsReader->ReadInt (DEFAULT_XML_HP_NODE_NAME)); pokemonInfo_.SetAttack ( statsReader->ReadInt (DEFAULT_XML_ATTACK_NODE_NAME)); pokemonInfo_.SetDefense ( statsReader->ReadInt (DEFAULT_XML_DEFENSE_NODE_NAME)); pokemonInfo_.SetSpecialAttack ( statsReader->ReadInt (DEFAULT_XML_SPECIAL_ATTACK_NODE_NAME)); pokemonInfo_.SetSpecialDefense ( statsReader->ReadInt (DEFAULT_XML_SPECIAL_DEFENSE_NODE_NAME)); pokemonInfo_.SetSpeed ( statsReader->ReadInt (DEFAULT_XML_SPEED_NODE_NAME)); auto EVReader = reader->ChangeRoot (DEFAULT_XML_EFFORT_VALUES_NODE_NAME); pokemonInfo_.SetHitPointEV ( EVReader->ReadInt (DEFAULT_XML_HP_NODE_NAME)); pokemonInfo_.SetAttackEV ( EVReader->ReadInt (DEFAULT_XML_ATTACK_NODE_NAME)); pokemonInfo_.SetDefenseEV ( EVReader->ReadInt (DEFAULT_XML_DEFENSE_NODE_NAME)); pokemonInfo_.SetSpecialAttackEV ( EVReader->ReadInt (DEFAULT_XML_SPECIAL_ATTACK_NODE_NAME)); pokemonInfo_.SetSpecialDefenseEV ( EVReader->ReadInt (DEFAULT_XML_SPECIAL_DEFENSE_NODE_NAME)); pokemonInfo_.SetSpeedEV ( EVReader->ReadInt (DEFAULT_XML_SPEED_NODE_NAME)); if (reader->NodeExists (DEFAULT_XML_EVOLUTION_NODE_NAME)) { auto evolutionReader = reader->ChangeRoot ( DEFAULT_XML_EVOLUTION_NODE_NAME); pokemonInfo_.SetEvolutionLevel ( evolutionReader->ReadInt ( XmlHelper::GetAttrNodeName (DEFAULT_XML_LEVEL_ATTR_NAME))); pokemonInfo_.SetPokemonEvolutionID (evolutionReader->ReadID ()); } auto baseSkillsReader = reader->ChangeRoot (DEFAULT_XML_BASE_SKILLS_NODE_NAME); yap::XmlReaderCollection skillReaders; baseSkillsReader->ReadNodes (DEFAULT_XML_SKILL_NODE_NAME, skillReaders); for (auto& skillReader : skillReaders) { UInt16 level = skillReader->ReadInt ( XmlHelper::GetAttrNodeName (DEFAULT_XML_LEVEL_ATTR_NAME)); ID skillID = skillReader->ReadID (); pokemonInfo_.AddBaseSkill (level, skillID); } auto typeReader = reader->ChangeRoot (DEFAULT_XML_TYPES_NODE_NAME); pokemonInfo_.SetType1 (typeReader->ReadInt (DEFAULT_XML_TYPE1_NODE_NAME)); pokemonInfo_.SetType2 (typeReader->ReadInt (DEFAULT_XML_TYPE2_NODE_NAME)); auto graphicReader = reader->ChangeRoot (DEFAULT_XML_GRAPHICS_NODE_NAME); pokemonInfo_.SetIconPath (graphicReader->ReadString (DEFAULT_XML_ICON_NODE_NAME)); // <male> auto maleReader = graphicReader->ChangeRoot (DEFAULT_XML_MALE_NODE_NAME); pokemonInfo_.SetMaleFrontPath (maleReader->ReadString (DEFAULT_XML_FRONT_NODE_NAME)); pokemonInfo_.SetMaleBackPath (maleReader->ReadString (DEFAULT_XML_BACK_NODE_NAME)); auto shinyMaleReader = maleReader->ChangeRoot (DEFAULT_XML_SHINY_NODE_NAME); pokemonInfo_.SetShinyMaleFrontPath (shinyMaleReader->ReadString (DEFAULT_XML_FRONT_NODE_NAME)); pokemonInfo_.SetShinyMaleBackPath (shinyMaleReader->ReadString (DEFAULT_XML_BACK_NODE_NAME)); // </male> // <female> auto femaleReader = graphicReader->ChangeRoot (DEFAULT_XML_FEMALE_NODE_NAME); pokemonInfo_.SetFemaleFrontPath (femaleReader->ReadString (DEFAULT_XML_FRONT_NODE_NAME)); pokemonInfo_.SetFemaleBackPath (femaleReader->ReadString (DEFAULT_XML_BACK_NODE_NAME)); auto shinyFemaleReader = femaleReader->ChangeRoot (DEFAULT_XML_SHINY_NODE_NAME); pokemonInfo_.SetShinyFemaleFrontPath (shinyFemaleReader->ReadString (DEFAULT_XML_FRONT_NODE_NAME)); pokemonInfo_.SetShinyFemaleBackPath (shinyFemaleReader->ReadString (DEFAULT_XML_BACK_NODE_NAME)); // </female> }