示例#1
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);
    }
  }
BOOL CPackFiles::BeginRead(void)
{
	maReads.Init();

	ReturnOnFalse(mcFile.Open(EFM_Read));

	ReturnOnFalse(ReadHeader());
	ReturnOnFalse(ReadNodes());
	
	return TRUE;
}
BOOL CPackFiles::BeginWrite(void)
{
	ReturnOnFalse(mcFile.Open(EFM_ReadWrite_Create));

	if (mcFile.GetFileSize() > 0)
	{
		ReturnOnFalse(ReadHeader());
		ReturnOnFalse(ReadNodes());

		return TRUE;
	}
	else
	{
		return WriteHeader();
	}
}
示例#4
0
bool wxDiagram::LoadFile(const wxString& filename)
{
  wxBeginBusyCursor();

  wxExprDatabase database(wxExprInteger, _T("id"));
  if (!database.Read(filename))
  {
    wxEndBusyCursor();
    return false;
  }

  DeleteAllShapes();

  database.BeginFind();
  wxExpr *header = database.FindClauseByFunctor(_T("diagram"));

  if (header)
    OnHeaderLoad(database, *header);

  // Scan through all clauses and register the ids
  wxNode *node = database.GetFirst();
  while (node)
  {
    wxExpr *clause = (wxExpr *)node->GetData();
    long id = -1;
    clause->GetAttributeValue(_T("id"), id);
    wxRegisterId(id);
    node = node->GetNext();
  }

  ReadNodes(database);
  ReadContainerGeometry(database);
  ReadLines(database);

  OnDatabaseLoad(database);

  wxEndBusyCursor();

  return true;
}
示例#5
0
  void PreprocessPBF::ProcessBlock(const TypeConfigRef& typeConfig,
                                   std::unique_ptr<PBF::PrimitiveBlock>&& block)
  {
    PreprocessorCallback::RawBlockDataRef blockData(new PreprocessorCallback::RawBlockData());

    for (int currentGroup=0;
         currentGroup<block->primitivegroup_size();
         currentGroup++) {
      const PBF::PrimitiveGroup &group=block->primitivegroup(currentGroup);

      if (group.nodes_size()>0) {
        ReadNodes(*typeConfig,
                  *block,
                  group,
                  *blockData);
      }
      else if (group.has_dense()) {
        ReadDenseNodes(*typeConfig,
                       *block,
                       group,
                       *blockData);
      }
      else if (group.ways_size()>0) {
        ReadWays(*typeConfig,
                 *block,
                 group,
                 *blockData);
      }
      else if (group.relations_size()>0) {
        ReadRelations(*typeConfig,
                      *block,
                      group,
                      *blockData);
      }
    }

    callback.ProcessBlock(std::move(blockData));
  }
示例#6
0
  void CharacterReader::Visit (yap::XmlReader& visitable)
  {
    yap::CharacterReader::Visit (visitable);

    auto reader = visitable.ChangeRoot (xmlRootNodeName_);
    auto stringSpriteSetReader = reader->ChangeRoot ("StringSpriteSet");

    yap::XmlReaderCollection directionSpriteReaders;
    stringSpriteSetReader->ReadNodes ("sprite", directionSpriteReaders);
    for (auto& directionSpriteReader : directionSpriteReaders)
    {
      yap::String state = directionSpriteReader->ReadString ("key");
      yap::String spriteType = directionSpriteReader->ReadString (
        "spriteType");

      character_.AddSprite (
        state,
        yap::ObjectFactory::Instance ().Create<
          yap::SpriteSet<yap::Direction>> (
            spriteType,
            *directionSpriteReader,
            spriteType));
    }
  }
示例#7
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>
  }