当前位置: 首页>>代码示例>>C++>>正文


C++ MainMenu::getState方法代码示例

本文整理汇总了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;
//.........这里部分代码省略.........
开发者ID:MoLAoS,项目名称:Mandate,代码行数:101,代码来源:element_type.cpp


注:本文中的MainMenu::getState方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。