//-------------------------------------------------------------- void CWeaponSystem::CheckEnvironmentChanges() { if(gEnv->bMultiplayer) return; IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem(); bool frozenEnvironment = m_frozenEnvironment; bool wetEnvironment = m_wetEnvironment; m_tokensUpdated = false; if(pGameTokenSystem) { // next call will leave value unchanged if not found pGameTokenSystem->GetTokenValueAs("weapon.effects.ice", frozenEnvironment); pGameTokenSystem->GetTokenValueAs("weapon.effects.wet", wetEnvironment); } if(m_frozenEnvironment!=frozenEnvironment) { m_frozenEnvironment = frozenEnvironment; ApplyEnvironmentChanges(); } if(m_wetEnvironment!=wetEnvironment) { m_wetEnvironment = wetEnvironment; ApplyEnvironmentChanges(); } }
// Wraps fetching the game token IGameToken* CTweakMetadataGameToken::GetGameToken(void) const { IGameTokenSystem* pSystem = CCryAction::GetCryAction()->GetIGameTokenSystem(); if(pSystem) { return pSystem->FindToken(m_command); } return NULL; }
//-------------------------------------------------------------- void CWeaponSystem::UnregisterGameTokens() { if(gEnv->bMultiplayer) return; IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem(); if(pGameTokenSystem) { pGameTokenSystem->UnregisterListener("weapon.effects.ice", this); pGameTokenSystem->UnregisterListener("weapon.effects.wet",this); } }
//--------------------------------------------------------------- void CWeaponSystem::CreateEnvironmentGameTokens(bool frozenEnvironment, bool wetEnvironment) { if(gEnv->bMultiplayer) return; IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem(); // create the game tokens if not present if(pGameTokenSystem) { pGameTokenSystem->SetOrCreateToken("weapon.effects.ice", TFlowInputData(frozenEnvironment)); pGameTokenSystem->SetOrCreateToken("weapon.effects.wet", TFlowInputData(wetEnvironment)); } }
void CCheckpointSystem::WriteGameTokens(XmlNodeRef parentNode) { //create serialization writer XmlNodeRef node = GetISystem()->CreateXmlNode(GAMETOKEN_SECTION); IXmlSerializer *pSerializer = GetISystem()->GetXmlUtils()->CreateXmlSerializer(); ISerialize *pWriter = pSerializer->GetWriter(node); //get serialization data TSerialize ser = TSerialize(pWriter); IGameTokenSystem *pTokenSystem = CCryAction::GetCryAction()->GetIGameTokenSystem(); pTokenSystem->Serialize(ser); //add to parent node parentNode->addChild(node); pSerializer->Release(); }
//------------------------------------------------------------------------ CSingleTG::CSingleTG() { m_iSerializeIgnoreUpdate = 0; m_fSerializeProgress = 0.0f; m_idSerializeTarget = 0; // create the game tokens if not present IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem(); if(pGameTokenSystem) { for(int i=0; i<SINGLETG_MAX_TARGETS; i++) { EntityId entityId = 0; if (pGameTokenSystem->FindToken(g_TokenTable[i]) == 0) pGameTokenSystem->SetOrCreateToken(g_TokenTable[i], TFlowInputData(entityId)); } } }
//--------------------------------------------------- void CSingleTG::UpdateTargets() { IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem(); if(pGameTokenSystem) { for(int i=0; i<SINGLETG_MAX_TARGETS; i++) { EntityId entityId = 0; // next call will leave entityId unchanged if not found, but it's 0 by default pGameTokenSystem->GetTokenValueAs(g_TokenTable[i], entityId); m_targetIds[i] = entityId; } } else { for(int i=0; i<SINGLETG_MAX_TARGETS; i++) m_targetIds[i] = 0; } }
void CCheckpointSystem::ReadGameTokens(XmlNodeRef parentNode) { //get source node XmlNodeRef node = parentNode->findChild(GAMETOKEN_SECTION); if(!node) { CryWarning(VALIDATOR_MODULE_GAME, VALIDATOR_ERROR, "Couldn't find Gametoken section while reading checkpoint."); return; } //create serialization reader IXmlSerializer *pSerializer = GetISystem()->GetXmlUtils()->CreateXmlSerializer(); ISerialize *pReader = pSerializer->GetReader(node); //read serialization data TSerialize ser = TSerialize(pReader); IGameTokenSystem *pTokenSystem = CCryAction::GetCryAction()->GetIGameTokenSystem(); pTokenSystem->Serialize(ser); pSerializer->Release(); }