Bazaar developer reference

CvPolicyAI::Read(FDataStream &)

Defined in
CvPolicyAI.cpp, line 53
Class
CvPolicyAI
Hook name
CivHooks::CvPolicyAI_Read

Hooks

static bool BeforeCvPolicyAI_Read(CvPolicyAI* self, FDataStream& kStream);static void AfterCvPolicyAI_Read(CvPolicyAI* self, FDataStream& kStream);static void ReplaceCvPolicyAI_Read(void (*original)(CvPolicyAI*, FDataStream&), CvPolicyAI* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvPolicyAI_Read>(host, &BeforeCvPolicyAI_Read);CivRegisterAfter<CivHooks::CvPolicyAI_Read>(host, &AfterCvPolicyAI_Read);CivRegisterReplace<CivHooks::CvPolicyAI_Read>(host, &ReplaceCvPolicyAI_Read);

Code

52/// Serialization read53void CvPolicyAI::Read(FDataStream& kStream)54{55	// Version number to maintain backwards compatibility56	uint uiVersion;57	kStream >> uiVersion;58	MOD_SERIALIZE_INIT_READ(kStream);5960	int iWeight;6162	CvAssertMsg(m_pCurrentPolicies->GetPolicies() != NULL, "Policy AI serialization failure: no policy data");63	CvAssertMsg(m_pCurrentPolicies->GetPolicies()->GetNumPolicies() > 0, "Policy AI serialization failure: number of policies not greater than 0");6465	// Reset vector66	m_PolicyAIWeights.clear();6768	uint uiPolicyArraySize = m_pCurrentPolicies->GetPolicies()->GetNumPolicies();69	// Must set to the final size because we might not be adding in sequentially70	m_PolicyAIWeights.resize(uiPolicyArraySize);71	// Clear the contents in case we are loading a smaller set72	for(uint uiIndex = 0; uiIndex < uiPolicyArraySize; ++uiIndex)73		m_PolicyAIWeights.SetWeight(uiIndex, 0);7475	uint uiPolicyCount;76	kStream >> uiPolicyCount;7778	for(uint uiIndex = 0; uiIndex < uiPolicyCount; ++uiIndex)79	{80		PolicyTypes ePolicy = (PolicyTypes)CvInfosSerializationHelper::ReadHashed(kStream);81		kStream >> iWeight;82		if(ePolicy != NO_POLICY && (uint)ePolicy < uiPolicyArraySize)83			m_PolicyAIWeights.SetWeight((uint)ePolicy, iWeight);84	}85}

Calls

Called by