示例#1
0
void CScriptbind_CrySerialize::ValueVec3(ISerialize *ser, mono::string name, Vec3 &obj, mono::string policy)
{
	int iPolicy = ConvertPolicy(policy);

	TSerialize serialize = TSerialize(ser);
	serialize.Value(ToCryString(name), obj, iPolicy);
}
void CGameTokenSystem::SerializeReadLevelToLevel()
{
	if (!m_levelToLevelSave)
		return;

	IXmlSerializer* pSerializer = gEnv->pSystem->GetXmlUtils()->CreateXmlSerializer();
	ISerialize* pSer = pSerializer->GetReader( m_levelToLevelSave );
	TSerialize ser = TSerialize(pSer);

	{
		ScopedSwitchToGlobalHeap globalHeap;
		uint32 numTokens = 0;
		ser.Value( "numTokens", numTokens );
		for (uint32 i=0; i<numTokens; i++)
		{
			ser.BeginGroup("Token");
			string tokenName;
			ser.Value( "name", tokenName );
			CGameToken* pToken = GetToken( tokenName.c_str() );
			if (pToken)
				pToken->m_value.Serialize(ser);
			else
				CryWarning(VALIDATOR_MODULE_GAME, VALIDATOR_ERROR, "GameTokenSystem. GameToken '%s' was not found when trying to serialize (read) level to level", tokenName.c_str() );
			ser.EndGroup();
		}
	}
	pSerializer->Release();
	m_levelToLevelSave = NULL; // this frees it
}
void CGameTokenSystem::SerializeSaveLevelToLevel( const char** ppGameTokensList, uint32 numTokensToSave )
{
	{
		ScopedSwitchToGlobalHeap globalHeap;
		m_levelToLevelSave = gEnv->pSystem->CreateXmlNode( "GameTokensLevelToLevel" );
	}

	IXmlSerializer* pSerializer = gEnv->pSystem->GetXmlUtils()->CreateXmlSerializer();
	ISerialize* pSer = pSerializer->GetWriter(m_levelToLevelSave);
	TSerialize ser = TSerialize(pSer);

	{
		ScopedSwitchToGlobalHeap globalHeap;
		uint32 numTokensSaved = 0;
		for (uint32 i=0; i<numTokensToSave; ++i)
		{
			const char* pName = ppGameTokensList[i];
			CGameToken* pToken = GetToken( pName );
			if (pToken)
			{
				numTokensSaved++;
				ser.BeginGroup("Token");
				ser.Value( "name",pToken->m_name );
				pToken->m_value.Serialize(ser);
				ser.EndGroup();
			}
			else
				CryWarning(VALIDATOR_MODULE_GAME, VALIDATOR_ERROR, "GameTokenSystem. GameToken %s was not found when trying to serialize (save) level to level", pName ? pName : "<NULL>");
		}
		ser.Value( "numTokens", numTokensSaved );
	}
	pSerializer->Release();
}
示例#4
0
void CScriptbind_CrySerialize::ValueString(ISerialize *ser, mono::string name, mono::string &str, int policy)
{
	TSerialize serialize = TSerialize(ser);
	if(!ser->IsReading())
		serialize.Value(ToCryString(name), ToCryString(str), policy);
	else
	{
		string cryStr;
		serialize.Value(ToCryString(name), cryStr, policy);
		str = ToMonoString(cryStr.c_str());
	}
}
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();
}
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();
}
示例#7
0
void CScriptbind_CrySerialize::ValueEntityId(ISerialize *ser, mono::string name, EntityId &obj)
{
	TSerialize serialize = TSerialize(ser);
	serialize.Value(ToCryString(name), obj, 'eid');
}
示例#8
0
void CScriptbind_CrySerialize::ValueBool(ISerialize *ser, mono::string name, bool &obj)
{
	TSerialize serialize = TSerialize(ser);
	serialize.Value(ToCryString(name), obj, 'bool');
}
示例#9
0
void CScriptbind_CrySerialize::EnumValue(ISerialize *ser, mono::string name, int &obj, int first, int last)
{
	TSerialize serialize = TSerialize(ser);
	serialize.EnumValue(ToCryString(name), obj, first, last);
}
示例#10
0
void CScriptbind_CrySerialize::ValueQuat(ISerialize *ser, mono::string name, Quat &obj, int policy)
{
	TSerialize serialize = TSerialize(ser);
	serialize.Value(ToCryString(name), obj, policy);
}