Example #1
0
  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);
  }
Example #2
0
  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))));
  }
Example #3
0
  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);
    }
  }
Example #4
0
  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));
  }
Example #5
0
  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>
  }