Hooks
static bool BeforeCvTeam_Read(CvTeam* self, FDataStream& kStream);static void AfterCvTeam_Read(CvTeam* self, FDataStream& kStream);static void ReplaceCvTeam_Read(void (*original)(CvTeam*, FDataStream&), CvTeam* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvTeam_Read>(host, &BeforeCvTeam_Read);CivRegisterAfter<CivHooks::CvTeam_Read>(host, &AfterCvTeam_Read);CivRegisterReplace<CivHooks::CvTeam_Read>(host, &ReplaceCvTeam_Read);
Code
7372void CvTeam::Read(FDataStream& kStream)7373{7374 // Init data before load7375 reset();73767377 // Version number to maintain backwards compatibility7378 uint uiVersion;7379 kStream >> uiVersion;7380 MOD_SERIALIZE_INIT_READ(kStream);73817382 kStream >> m_iNumMembers;7383 kStream >> m_iAliveCount;7384 kStream >> m_iEverAliveCount;7385 kStream >> m_iNumCities;7386 kStream >> m_iTotalPopulation;7387 kStream >> m_iTotalLand;7388 kStream >> m_iNukeInterception;7389 kStream >> m_iExtraWaterSeeFromCount;7390 kStream >> m_iMapTradingCount;7391 kStream >> m_iTechTradingCount;7392 kStream >> m_iGoldTradingCount;7393 kStream >> m_iAllowEmbassyTradingAllowedCount;7394 kStream >> m_iOpenBordersTradingAllowedCount;7395 kStream >> m_iDefensivePactTradingAllowedCount;7396 kStream >> m_iResearchAgreementTradingAllowedCount;7397 kStream >> m_iTradeAgreementTradingAllowedCount;7398 kStream >> m_iPermanentAllianceTradingCount;7399#if defined(MOD_TECHS_CITY_WORKING)7400 MOD_SERIALIZE_READ(23, kStream, m_iCityWorkingChange, 0);7401#endif7402#if defined(MOD_TECHS_CITY_AUTOMATON_WORKERS)7403 MOD_SERIALIZE_READ(89, kStream, m_iCityAutomatonWorkersChange, 0);7404#endif7405 kStream >> m_iBridgeBuildingCount;7406 kStream >> m_iWaterWorkCount;7407 kStream >> m_iRiverTradeCount;7408 kStream >> m_iBorderObstacleCount;7409 kStream >> m_iVictoryPoints;7410 kStream >> m_iEmbarkedExtraMoves;7411 kStream >> m_iCanEmbarkCount;7412 kStream >> m_iDefensiveEmbarkCount;7413 kStream >> m_iEmbarkedAllWaterPassageCount;7414 kStream >> m_iNumNaturalWondersDiscovered;7415 kStream >> m_iBestPossibleRoute;7416 kStream >> m_iNumMinorCivsAttacked;74177418 kStream >> m_bMapCentering;7419 kStream >> m_bHasBrokenPeaceTreaty;7420 kStream >> m_bHomeOfUnitedNations;7421 kStream >> m_bHasTechForWorldCongress;74227423 kStream >> m_bBrokenMilitaryPromise;7424 kStream >> m_bBrokenExpansionPromise;7425 kStream >> m_bBrokenBorderPromise;7426 kStream >> m_bBrokenCityStatePromise;74277428 kStream >> m_eID;74297430 kStream >> m_eCurrentEra;7431 kStream >> m_eLiberatedByTeam;7432 kStream >> m_eKilledByTeam;74337434 ArrayWrapper<int> kTechShareCountWrapper(MAX_TEAMS, &m_aiTechShareCount[0]);7435 kStream >> kTechShareCountWrapper;74367437 ArrayWrapper<int> kNumTurnsAtWarWrapper(MAX_TEAMS, &m_aiNumTurnsAtWar[0]);7438 kStream >> kNumTurnsAtWarWrapper;74397440 ArrayWrapper<int> kNumTurnsLockedIntoWarWrapper(MAX_TEAMS, &m_aiNumTurnsLockedIntoWar[0]);7441 kStream >> kNumTurnsLockedIntoWarWrapper;74427443 ArrayWrapper<int> kExtraMovesWrapper(NUM_DOMAIN_TYPES, &m_aiExtraMoves[0]);7444 kStream >> kExtraMovesWrapper;74457446 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_aiForceTeamVoteEligibilityCount, GC.getNumVoteSourceInfos());74477448 ArrayWrapper<int> kTurnMadePeaceWrapper(MAX_TEAMS, &m_paiTurnMadePeaceTreatyWithTeam[0]);7449 kStream >> kTurnMadePeaceWrapper;74507451 ArrayWrapper<int> kIgnoreWarningWrapper(MAX_TEAMS, &m_aiIgnoreWarningCount[0]);7452 kStream >> kIgnoreWarningWrapper;74537454 ArrayWrapper<bool> kHasMetWrapper(MAX_TEAMS, &m_abHasMet[0]);7455 kStream >> kHasMetWrapper;74567457 ArrayWrapper<bool> kHasFoundPlayerWrapper(MAX_PLAYERS, &m_abHasFoundPlayersTerritory[0]);7458 kStream >> kHasFoundPlayerWrapper;74597460 ArrayWrapper<bool> kAtWarWrapper(MAX_TEAMS, &m_abAtWar[0]);7461 kStream >> kAtWarWrapper;74627463#if defined(MOD_EVENTS_WAR_AND_PEACE)7464 if (uiDllSaveVersion >= 63) {7465 ArrayWrapper<bool> kAggressorPacifierWrapper(MAX_TEAMS, &m_abAggressorPacifier[0]);7466 kStream >> kAggressorPacifierWrapper;7467 } else {7468 for (int i = 0; i < MAX_TEAMS; ++i) {7469 m_abAggressorPacifier[i] = false;7470 }7471 }7472#endif74737474 ArrayWrapper<bool> kPermanentWarWrapper(MAX_TEAMS, &m_abPermanentWarPeace[0]);7475 kStream >> kPermanentWarWrapper;74767477 ArrayWrapper<bool> kEmbassyWrapper(MAX_TEAMS, &m_abEmbassy[0]);7478 kStream >> kEmbassyWrapper;74797480 ArrayWrapper<bool> kOpenBordersWrapper(MAX_TEAMS, &m_abOpenBorders[0]);7481 kStream >> kOpenBordersWrapper;74827483 ArrayWrapper<bool> kDefensivePactWrapper(MAX_TEAMS, &m_abDefensivePact[0]);7484 kStream >> kDefensivePactWrapper;74857486 ArrayWrapper<bool> kResearchAgreementWrapper(MAX_TEAMS, &m_abResearchAgreement[0]);7487 kStream >> kResearchAgreementWrapper;74887489 ArrayWrapper<bool> kTradeAgreementWrapper(MAX_TEAMS, &m_abTradeAgreement[0]);7490 kStream >> kTradeAgreementWrapper;74917492 ArrayWrapper<bool> kForcePeaceWrapper(MAX_TEAMS, &m_abForcePeace[0]);7493 kStream >> kForcePeaceWrapper;74947495 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_abCanLaunch, GC.getNumVictoryInfos());7496 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_abVictoryAchieved, GC.getNumVictoryInfos());7497 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_abSmallAwardAchieved, GC.getNumSmallAwardInfos());7498 7499 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiRouteChange, GC.getNumRouteInfos());7500 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiBuildTimeChange, GC.getNumBuildInfos());7501 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiProjectCount, GC.getNumProjectInfos());7502 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiProjectDefaultArtTypes, GC.getNumProjectInfos());75037504 //project art types75057506 int iNumProjects;7507 kStream >> iNumProjects;7508 for(int i=0; i<iNumProjects; i++)7509 {7510 int iType = CvInfosSerializationHelper::ReadHashed(kStream);7511 if (iType != -1)7512 {7513 for(int j=0; j<m_paiProjectCount[iType]; j++)7514 {7515 int temp;7516 kStream >> temp;7517 m_pavProjectArtTypes[iType].push_back(temp);7518 }7519 }7520 else7521 {7522 for(int j=0; j<m_paiProjectCount[iType]; j++)7523 {7524 int temp;7525 kStream >> temp;7526 }7527 m_paiProjectCount[iType] = 0;7528 }7529 }75307531 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiProjectMaking, GC.getNumProjectInfos());75327533 UnitClassArrayHelpers::Read(kStream, m_paiUnitClassCount);75347535 BuildingClassArrayHelpers::Read(kStream, m_paiBuildingClassCount);7536 BuildingArrayHelpers::Read(kStream, m_paiObsoleteBuildingCount);75377538 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiTerrainTradeCount, GC.getNumTerrainInfos());7539 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_aiVictoryCountdown, GC.getNumVictoryInfos());75407541 ArrayWrapper<int> kTurnTeamMetWrapper(MAX_CIV_TEAMS, &m_aiTurnTeamMet[0]);7542 kStream >> kTurnTeamMetWrapper;75437544 m_pTeamTechs->Read(kStream);75457546#if defined(MOD_API_UNIFIED_YIELDS)7547 FeatureArrayHelpers::ReadYieldArray(kStream, m_ppaaiFeatureYieldChange, NUM_YIELD_TYPES);7548 TerrainArrayHelpers::ReadYieldArray(kStream, m_ppaaiTerrainYieldChange, NUM_YIELD_TYPES);7549#endif75507551 ImprovementArrayHelpers::ReadYieldArray(kStream, m_ppaaiImprovementYieldChange, NUM_YIELD_TYPES);7552 ImprovementArrayHelpers::ReadYieldArray(kStream, m_ppaaiImprovementNoFreshWaterYieldChange, NUM_YIELD_TYPES);7553 ImprovementArrayHelpers::ReadYieldArray(kStream, m_ppaaiImprovementFreshWaterYieldChange, NUM_YIELD_TYPES);75547555 CvInfosSerializationHelper::ReadHashedTypeArray(kStream, m_aeRevealedResources);75567557 // Fix bad 'at war' flags where we are at war with ourselves. Not a good thing.7558 if(m_eID >= 0 && m_eID < MAX_TEAMS)7559 {7560 m_abAtWar[m_eID] = false;7561 m_aiNumTurnsAtWar[m_eID] = 0;7562 }7563}