本文整理汇总了C++中MainMenu::getState方法的典型用法代码示例。如果您正苦于以下问题:C++ MainMenu::getState方法的具体用法?C++ MainMenu::getState怎么用?C++ MainMenu::getState使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MainMenu
的用法示例。
在下文中一共展示了MainMenu::getState方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load
bool RequirableType::load(const XmlNode *baseNode, const string &dir, bool add) {
bool loadOk = DisplayableType::load(baseNode, dir, add);
const FactionType *ft = 0;
const TechTree *tt = 0;
if (&g_world) {
for (int i = 0; i < g_world.getTechTree()->getFactionTypeCount(); ++i) {
tt = g_world.getTechTree();
ft = g_world.getTechTree()->getFactionType(i);
for (int j = 0; j < ft->getUnitTypeCount(); ++j) {
if (m_name == ft->getUnitType(i)->getName()) {
break;
}
}
}
} else if (g_program.getState()->isCCState()) {
MainMenu *charMenu = static_cast<MainMenu*>(g_program.getState());
MenuStateCharacterCreator *charState = static_cast<MenuStateCharacterCreator*>(charMenu->getState());
CharacterCreator *charCreator = charState->getCharacterCreator();
tt = charCreator->getTechTree();
for (int i = 0; i < tt->getFactionTypeCount(); ++i) {
ft = tt->getFactionType(i);
for (int j = 0; j < ft->getUnitTypeCount(); ++j) {
if (m_name == ft->getUnitType(i)->getName()) {
break;
}
}
}
} else {
MainMenu *charMenu = static_cast<MainMenu*>(g_program.getState());
MenuStateCharacterCreator *charState = static_cast<MenuStateCharacterCreator*>(charMenu->getState());
CharacterCreator *charCreator = charState->getCharacterCreator();
tt = charCreator->getTechTree();
for (int i = 0; i < tt->getFactionTypeCount(); ++i) {
ft = tt->getFactionType(i);
for (int j = 0; j < ft->getUnitTypeCount(); ++j) {
if (m_name == ft->getUnitType(i)->getName()) {
break;
}
}
}
}
try { // Unit requirements
const XmlNode *unitRequirementsNode = baseNode->getChild("unit-requirements", 0, false);
if(unitRequirementsNode) {
for(int i = 0; i < unitRequirementsNode->getChildCount(); ++i) {
const XmlNode *unitNode = unitRequirementsNode->getChild("unit", i);
string name = unitNode->getRestrictedAttribute("name");
bool scope = false;
string local = unitNode->getRestrictedAttribute("scope");
if (local == "local") {
scope = true;
}
int value = unitNode->getIntAttribute("amount");
UnitReq unitReq;
unitReq.init(ft->getUnitType(name), value, scope);
unitReqs.push_back(unitReq);
}
}
} catch (runtime_error e) {
g_logger.logXmlError(dir, e.what ());
loadOk = false;
}
try { // Item requirements
const XmlNode *itemRequirementsNode = baseNode->getChild("item-requirements", 0, false);
if(itemRequirementsNode) {
for(int i = 0; i < itemRequirementsNode->getChildCount(); ++i) {
const XmlNode *itemNode = itemRequirementsNode->getChild("item", i);
string name = itemNode->getRestrictedAttribute("name");
bool scope = false;
string local = itemNode->getRestrictedAttribute("scope");
if (local == "local") {
scope = true;
}
int value = itemNode->getIntAttribute("amount");
ItemReq itemReq;
itemReq.init(ft->getItemType(name), value, scope);
itemReqs.push_back(itemReq);
}
}
} catch (runtime_error e) {
g_logger.logXmlError(dir, e.what ());
loadOk = false;
}
try { // Upgrade requirements
const XmlNode *upgradeRequirementsNode = baseNode->getChild("upgrade-requirements", 0, false);
if(upgradeRequirementsNode) {
for(int i = 0; i < upgradeRequirementsNode->getChildCount(); ++i) {
const XmlNode *upgradeReqNode = upgradeRequirementsNode->getChild("upgrade", i);
string name = upgradeReqNode->getRestrictedAttribute("name");
int stage = upgradeReqNode->getIntAttribute("value");
UpgradeReq upgradeReq;
upgradeReq.init(ft->getUpgradeType(name), stage);
upgradeReqs.push_back(upgradeReq);
}
}
} catch (runtime_error e) {
g_logger.logXmlError(dir, e.what ());
loadOk = false;
//.........这里部分代码省略.........