//Создаем новую расу и заполняем ее поля значениями из файлда void LoadKin(pugi::xml_node KinNode) { pugi::xml_node CurNode; PlayerKinPtr TmpKin(new PlayerKin); //Parse kin's parameters TmpKin->KinNum = KinNode.attribute("kinnum").as_int(); TmpKin->Enabled = KinNode.attribute("enabled").as_bool(); CurNode = KinNode.child("menu"); TmpKin->KinMenuStr = CurNode.child_value(); CurNode = KinNode.child("kinname"); TmpKin->KinItName = CurNode.child("itname").child_value(); TmpKin->KinHeName = CurNode.child("hename").child_value(); TmpKin->KinSheName = CurNode.child("shename").child_value(); TmpKin->KinPluralName = CurNode.child("pluralname").child_value(); //Parce kin races CurNode = KinNode.child("kinraces"); for (CurNode = CurNode.child("race"); CurNode; CurNode = CurNode.next_sibling("race")) { LoadRace(CurNode, TmpKin); } //Add new kin in kin list PlayerRace::PlayerKinList.push_back(TmpKin); }
bool psTextureFactory::Initialize(iObjectRegistry* object_reg,const char *xmlfilename) { psTextureFactory::object_reg = object_reg; csRef<iVFS> vfs = csQueryRegistry<iVFS> (object_reg); csRef<iDocumentSystem> xml = csQueryRegistry<iDocumentSystem> (object_reg); if (!xml) xml = csPtr<iDocumentSystem>(new csTinyDocumentSystem); if (!vfs || !xml) return false; csRef<iFile> file = vfs->Open(xmlfilename, VFS_FILE_READ); if (!file) { printf("Cannot open %s.\n",xmlfilename); return false; } csRef<iDocument> doc = xml->CreateDocument(); const char* error = doc->Parse(file); if (error) { printf("Error Loading Race Part Region Data: %s\n", error); return false; } printf ("Loading Race Part Regions...\n"); csRef<iDocumentNodeIterator> raceIter = doc->GetRoot()->GetNode("RaceDefs")->GetNodes("Race"); while (raceIter->HasNext()) { csRef<iDocumentNode> raceNode = raceIter->Next(); printf("Loading xml regions for race...\n"); if (!LoadRace(raceNode)) { printf("XML Err!\n"); return false; } } return true; }