本文整理汇总了C++中XmlParser::GetXmlTree方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlParser::GetXmlTree方法的具体用法?C++ XmlParser::GetXmlTree怎么用?C++ XmlParser::GetXmlTree使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlParser
的用法示例。
在下文中一共展示了XmlParser::GetXmlTree方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadFromDisk
void Bundle::loadFromDisk() {
std::ifstream file;
GetBundleFileHandleForReading(this->bundleName, file);
if (file.good()) {
XmlParser* parser = new XmlParser();
parser->ParseXmlFile(file);
XmlTree* tree = parser->GetXmlTree();
VERIFY(tree != nullptr, "Got xml tree for bundle data in bundle %s", this->bundleName.c_str());
XmlNode* rootNode = tree->GetRootNode();
VERIFY(rootNode != nullptr, "Got root node for bundle data in bundle %s", this->bundleName.c_str());
VERIFY(rootNode->GetName() == BUNDLE_TAG, "Got bundle node for bundle data in bundle %s", this->bundleName.c_str());
XmlNode* dataNode = rootNode->GetFirstChildByNodeName(DATA_TAG);
while(dataNode != nullptr) {
std::string key = dataNode->GetAttributeValueS(KEY_ATTRIBUTE);
std::string value = dataNode->GetAttributeValueS(VALUE_ATTRIBUTE);
this->PutString(key, value);
//
dataNode = dataNode->GetNextSiblingByNodeName(DATA_TAG);
}
delete parser;
}
}
示例2: LoadTutorialLevelNames
void LevelLoader::LoadTutorialLevelNames(std::vector<std::string>* levelsWithTutorials) {
FRAMEWORK->GetLogger()->dbglog("\nLoading tutorials from file: %s", tutorialXmlPath);
XmlParser* parser = new XmlParser();
parser->ParseXmlFile(FRAMEWORK->GetFileSystemUtils()->GetDeviceBaseResourcesPath() + tutorialXmlPath);
XmlTree* xmlTree = parser->GetXmlTree();
ASSERT(xmlTree != nullptr, "Got valid xmlTree from parser for level file %s", tutorialXmlPath);
XmlNode* rootTutorialsNode = xmlTree->GetRootNode();
ASSERT(rootTutorialsNode != nullptr, "Got valid tutoral node from xml tree for tutorial file %s", tutorialXmlPath);
for(XmlNode* tutorialNode : rootTutorialsNode->GetChildren()) {
FRAMEWORK->GetLogger()->dbglog("\n Loaded tutorial data for level: %s", tutorialNode->GetAttributeValueS(NAME_ATTRIBUTE).c_str());
levelsWithTutorials->push_back(tutorialNode->GetAttributeValueS(NAME_ATTRIBUTE));
}
delete parser;
}
示例3: LoadLevelFromFile
void LevelLoader::LoadLevelFromFile(std::string levelFilename) {
FRAMEWORK->GetLogger()->dbglog("\nLoading level from level file: %s", levelFilename.c_str());
XmlParser* parser = new XmlParser();
parser->ParseXmlFile(FRAMEWORK->GetFileSystemUtils()->GetDeviceBaseResourcesPath() + "levels/" + levelFilename);
#ifdef DEBUG
parser->Print();
#endif // DEBUG
XmlTree* xmlTree = parser->GetXmlTree();
ASSERT(xmlTree != nullptr, "Got valid xmlTree from parser for level file %s", levelFilename.c_str());
XmlNode* levelNode = xmlTree->GetRootNode();
ASSERT(levelNode != nullptr && levelNode->GetName() == LEVEL_TAG, "Got valid level node from xml tree for level file %s", levelFilename.c_str());
std::string bgm = levelNode->GetAttributeValueS(BGM_ATTRIBUTE);
if (bgm != "") {
AudioSource* bgmSource = SINGLETONS->GetMenuManager()->GetBGMSource();
bgmSource->LoadAudioClip(LEVEL_BGM, "audio/" + bgm);
}
XmlNode* gridNode = levelNode->GetFirstChildByNodeName(GRID_TAG);
VERIFY(gridNode != nullptr, "Level definition contains <%s> node", GRID_TAG);
SINGLETONS->GetGridManager()->loadGridDataFromXml(gridNode);
// Create the shady camera before we load any objects because their AudioSource components will need it
createCamera();
XmlNode* staticNode = levelNode->GetFirstChildByNodeName(STATIC_TAG);
// The level doesn't need to have a STATIC_TAG node
if (staticNode != nullptr) {
loadStaticDataFromXml(staticNode);
}
XmlNode* otherDataNode = levelNode->GetFirstChildByNodeName(OTHER_TAG);
// The level doesn't need to have an OTHER_TAG node
if (otherDataNode != nullptr) {
loadOtherDataFromXml(otherDataNode);
}
XmlNode* unitBaseNode = levelNode->GetFirstChildByNodeName(UNITS_TAG);
VERIFY(unitBaseNode != nullptr, "Level definition contains <%s> node", UNITS_TAG);
loadUnitDataFromXml(unitBaseNode);
XmlNode* linkBaseNode = levelNode->GetFirstChildByNodeName(LINKS_TAG);
VERIFY(linkBaseNode != nullptr, "Level definition contains <%s> node", LINKS_TAG);
if (linkBaseNode != nullptr) {
loadLinkDataFromXml(linkBaseNode);
loadParentConnectionsFromXml(linkBaseNode);
loadEndConditionsFromXml(linkBaseNode);
}
XmlNode* cameraNode = levelNode->GetFirstChildByNodeName(CAMERA_TAG);
VERIFY(cameraNode != nullptr, "Level definition contains <%s> node", CAMERA_TAG);
loadCameraDataFromXml(cameraNode);
delete parser;
SINGLETONS->GetMenuManager()->PlayBGM(LEVEL_BGM);
idsFromXml.clear();
LevelLoader::adjustLighting();
LevelLoader::postLoadLevel();
}
示例4: LoadLevelData
void LevelLoader::LoadLevelData(std::vector<ContractData*>* contractData) {
// Load the tutorials
std::vector<std::string> levelsWithTutorials;
LevelLoader::LoadTutorialLevelNames(&levelsWithTutorials);
FRAMEWORK->GetLogger()->dbglog("\nLoading levelData from file: %s", levelListXmlPath);
XmlParser* parser = new XmlParser();
parser->ParseXmlFile(FRAMEWORK->GetFileSystemUtils()->GetDeviceBaseResourcesPath() + levelListXmlPath);
XmlTree* xmlTree = parser->GetXmlTree();
ASSERT(xmlTree != nullptr, "Got valid xmlTree from parser for level file %s", levelListXmlPath);
XmlNode* rootLevelListNode = xmlTree->GetRootNode();
ASSERT(rootLevelListNode != nullptr, "Got valid tutoral node from xml tree for tutorial file %s", levelListXmlPath);
// Get the saved data
VERIFY(FRAMEWORK->GetSavedDataManager()->HasBundle(PLAYER_BUNDLE_NAME), "The game has saved data");
Bundle* bundle = FRAMEWORK->GetSavedDataManager()->GetSavedBundle(PLAYER_BUNDLE_NAME);
ASSERT(bundle->HasKey(LEVEL_COMPLETION), "The saved data has level completion");
std::string levelCompletionData = bundle->GetString(LEVEL_COMPLETION);
int missionNum = 0;
int levelNum = 0;
for(XmlNode* contractNode : rootLevelListNode->GetChildren()) {
ContractData* cData = new ContractData();
cData->name = StringUtilities::ReplaceCharInString(contractNode->GetAttributeValueS("title"), '_', ' ');
for(XmlNode* missionNode : contractNode->GetChildren()) {
FRAMEWORK->GetLogger()->dbglog("\n Loaded mission data for game");
MissionData* mData = new MissionData();
mData->name = StringUtilities::ReplaceCharInString(missionNode->GetAttributeValueS("title"), '_', ' ');
for(XmlNode* levelDataNode : missionNode->GetChildren()) {
LevelData* lData = new LevelData();
lData->name = levelDataNode->GetAttributeValueS(NAME_PROPERTY);
lData->name = StringUtilities::ReplaceCharInString(lData->name, '_', ' ');
lData->path = levelDataNode->GetAttributeValueS(PATH_PROPERTY);
lData->type = LevelLoader::stringToLevelType(levelDataNode->GetAttributeValueS(TYPE_PROPERTY));
lData->bounty = StringUtilities::ConvertStringToInt(levelDataNode->GetAttributeValueS("bounty"));
lData->description = StringUtilities::StringToUpper(levelDataNode->GetAttributeValueS(TYPE_PROPERTY));
lData->completion = LevelLoader::charToCompletionData(levelCompletionData[levelNum]);
lData->hasTutorial = std::find(levelsWithTutorials.begin(), levelsWithTutorials.end(), lData->path) != levelsWithTutorials.end();
lData->levelNum = levelNum;
lData->bonus = LevelBonus::None;
for(XmlNode* child : levelDataNode->GetChildren()) {
if(child->GetName() == "missionScreen") {
lData->pinX = child->GetAttributeValueF("x");
lData->pinY = child->GetAttributeValueF("y");
lData->parallaxScreen = child->GetAttributeValueF("parallaxScreen");
} else if(child->GetName() == "bonus") {
lData->bonus = StringToLevelBonus(child->GetAttributeValueS("type"));
lData->bonusValue = child->GetAttributeValueI("value");
}
}
mData->levels.push_back(lData);
levelNum++;
}
cData->missions.push_back(mData);
missionNum++;
}
contractData->push_back(cData);
}
delete parser;
}