CvEconomicAI::Read(FDataStream &)
- Defined in
- CvEconomicAI.cpp, line 345
- Class
- CvEconomicAI
- Hook name
CivHooks::CvEconomicAI_Read
Hooks
static bool BeforeCvEconomicAI_Read(CvEconomicAI* self, FDataStream& kStream);static void AfterCvEconomicAI_Read(CvEconomicAI* self, FDataStream& kStream);static void ReplaceCvEconomicAI_Read(void (*original)(CvEconomicAI*, FDataStream&), CvEconomicAI* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvEconomicAI_Read>(host, &BeforeCvEconomicAI_Read);CivRegisterAfter<CivHooks::CvEconomicAI_Read>(host, &AfterCvEconomicAI_Read);CivRegisterReplace<CivHooks::CvEconomicAI_Read>(host, &ReplaceCvEconomicAI_Read);
Code
344/// Serialization read345void CvEconomicAI::Read(FDataStream& kStream)346{347 // Version number to maintain backwards compatibility348 uint uiVersion;349 kStream >> uiVersion;350 MOD_SERIALIZE_INIT_READ(kStream);351352 int iEntriesToRead;353354 FAssertMsg(m_pAIStrategies != NULL && m_pAIStrategies->GetNumEconomicAIStrategies() > 0, "Number of AIStrategies to serialize is expected to greater than 0");355356 kStream >> iEntriesToRead;357358#ifdef _MSC_VER359#pragma warning ( push )360#pragma warning ( disable : 6011 ) // no clear solution or recovery if m_pAIStrategies is ever NULL361#endif//_MSC_VER362 ArrayWrapper<bool> wrapGetNumEconomicAIStrategies(iEntriesToRead, m_pabUsingStrategy);363#ifdef _MSC_VER364#pragma warning ( pop )365#endif//_MSC_VER366367 kStream >> wrapGetNumEconomicAIStrategies;368369 ArrayWrapper<int> wrapGetNumEconomicAIStrategies2(iEntriesToRead, m_paiTurnStrategyAdopted);370 kStream >> wrapGetNumEconomicAIStrategies2;371372 for(uint ui = 0; ui < NUM_YIELD_TYPES; ui++)373 {374 kStream >> m_auiYields[ui];375 }376377 kStream >> m_bExplorationPlotsDirty;378379 kStream >> iEntriesToRead;380381#define MAX_PLOT_ARRAY_SIZE ((152+1)*(96+1))382 int iMaxEntriesToRead = MIN(MAX_PLOT_ARRAY_SIZE, iEntriesToRead);383384 m_aiExplorationPlots.resize(iMaxEntriesToRead);385 m_aiExplorationPlotRatings.resize(iMaxEntriesToRead);386387 for(int i = 0; i < iMaxEntriesToRead; i++)388 {389 kStream >> m_aiExplorationPlots[i];390 kStream >> m_aiExplorationPlotRatings[i];391 }392393 // Skip any ones that go over the limit394 for(int i = iMaxEntriesToRead; i < iEntriesToRead; i++)395 {396 int iDummy;397 kStream >> iDummy;398 kStream >> iDummy;399 }400401 // goody hut plots402 kStream >> iEntriesToRead;403 iMaxEntriesToRead = MIN(MAX_PLOT_ARRAY_SIZE, iEntriesToRead);404 m_aiGoodyHutPlots.resize(iMaxEntriesToRead);405 m_aiGoodyHutUnitAssignments.resize(iMaxEntriesToRead);406407 for(int i = 0; i < iMaxEntriesToRead; i++)408 {409 kStream >> m_aiGoodyHutPlots[i];410 m_aiGoodyHutUnitAssignments[i].Clear();411 kStream >> m_aiGoodyHutUnitAssignments[i].m_iUnitID;412 }413414 // Skip any ones that go over the limit415 for(int i = iMaxEntriesToRead; i < iEntriesToRead; i++)416 {417 int iDummy;418 kStream >> iDummy;419 kStream >> iDummy;420 }421422 int iTemp;423 kStream >> iTemp;424 m_eReconState = (ReconState)iTemp;425 kStream >> iTemp;426 m_eNavalReconState = (ReconState)iTemp;427428 kStream >> m_iExplorersDisbanded;429 kStream >> m_iLastTurnWorkerDisbanded;430 kStream >> m_iVisibleAntiquitySites;431432 kStream >> iEntriesToRead;433 for(int i = 0; i < iEntriesToRead; i++)434 {435 kStream >> m_RequestedSavings[i];436 }437}
Calls
ArrayWrapper::ArrayWrapperArrayWrapper::ArrayWrapperBaseVector::operator[]BaseVector::operator[]BaseVector::operator[]BaseVector::operator[]- CvEconomicAI::GoodyHutUnitAssignment::Clear()
FDataStream::operator>>FDataStream::operator>>FDataStream::operator>>FFastVector::resizeFFastVector::resizeoperator>>operator>>- operator>>(FDataStream &, CvPurchaseRequest &)
std::min