void CMovementTransitions::Load() { Reset(); if (!g_pGame->GetCVars()->g_movementTransitions_enable) return; string filename = GetXMLFilename(); XmlNodeRef rootNode = gEnv->pSystem->LoadXmlFromFile(filename.c_str()); if (!rootNode || strcmpi(rootNode->getTag(), "MovementTransitions")) { GameWarning("Could not load movement transition data. Invalid XML file '%s'! ", filename.c_str()); return; } IItemParamsNode *paramNode = g_pGame->GetIGameFramework()->GetIItemSystem()->CreateParams(); paramNode->ConvertFromXML(rootNode); ReadGeneralParams(paramNode->GetChild("General")); bool success = ReadTransitionsParams(paramNode->GetChild("Transitions")); paramNode->Release(); m_isDataValid = success; }
//------------------------------------------------------------------------ IItemParamsNode *CItemParamsNode::InsertChild(const char *name) { m_children.push_back(new CItemParamsNode()); IItemParamsNode *inserted = m_children.back(); inserted->SetName(name); return inserted; }
//-------------------------------------------------------------------------------------------------- // Name: ReloadData // Desc: Reloads any loaded data for game effects registered callbacks //-------------------------------------------------------------------------------------------------- void GameSDKCGameEffectsSystem::ReloadData() { XmlNodeRef rootNode = gEnv->pSystem->LoadXmlFromFile(GAME_FX_DATA_FILE); if(!rootNode) { GameWarning("Could not load game effects data. Invalid XML file '%s'! ", GAME_FX_DATA_FILE); return; } IItemParamsNode* paramNode = g_pGame->GetIGameFramework()->GetIItemSystem()->CreateParams(); if(paramNode) { paramNode->ConvertFromXML(rootNode); // Pass data to any callback functions registered int callbackCount = s_dataReloadCallbackList.size(); DataReloadCallback dataReloadCallbackFunc = NULL; for(int i=0; i<callbackCount; i++) { dataReloadCallbackFunc = s_dataReloadCallbackList[i]; if(dataReloadCallbackFunc) { dataReloadCallbackFunc(paramNode); } } paramNode->Release(); } }//-------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------ bool CWeaponSystem::ScanXML(XmlNodeRef &root, const char *xmlFile) { MEMSTAT_CONTEXT_FMT(EMemStatContextTypes::MSC_Other, 0, "Weapon xml (%s)", xmlFile); if(strcmpi(root->getTag(), "ammo")) return false; const char *name = root->getAttr("name"); if(!name) { GameWarning("Missing ammo name in XML '%s'! Skipping...", xmlFile); return false; } const char *className = root->getAttr("class"); if(!className) { GameWarning("Missing ammo class in XML '%s'! Skipping...", xmlFile); return false; } TProjectileRegistry::iterator it = m_projectileregistry.find(CONST_TEMP_STRING(className)); if(it == m_projectileregistry.end()) { GameWarning("Unknown ammo class '%s' specified in XML '%s'! Skipping...", className, xmlFile); return false; } const char *scriptName = root->getAttr("script"); IEntityClassRegistry::SEntityClassDesc classDesc; classDesc.sName = name; classDesc.sScriptFile = scriptName?scriptName:""; //classDesc.pUserProxyData = (void *)it->second; //classDesc.pUserProxyCreateFunc = &CreateProxy<CProjectile>; classDesc.flags |= ECLF_INVISIBLE; IEntityClass *pClass = gEnv->pEntitySystem->GetClassRegistry()->FindClass(name); if(!m_reloading && !pClass) { m_pGame->GetIGameFramework()->GetIGameObjectSystem()->RegisterExtension(name, it->second, &classDesc); pClass = gEnv->pEntitySystem->GetClassRegistry()->FindClass(name); assert(pClass); } TAmmoTypeParams::iterator ait=m_ammoparams.find(pClass); if(ait==m_ammoparams.end()) { std::pair<TAmmoTypeParams::iterator, bool> result = m_ammoparams.insert(TAmmoTypeParams::value_type(pClass, SAmmoTypeDesc())); ait=result.first; } const char *configName = root->getAttr("configuration"); IItemParamsNode *params = m_pItemSystem->CreateParams(); params->ConvertFromXML(root); SAmmoParams *pAmmoParams=new SAmmoParams(params, pClass); SAmmoTypeDesc &desc=ait->second; if(!configName || !configName[0]) { if(desc.params) delete desc.params; desc.params=pAmmoParams; } else desc.configurations.insert(std::make_pair<string, const SAmmoParams *>(configName, pAmmoParams)); return true; }