Hooks
static bool BeforeCvTeam_reset(CvTeam* self, TeamTypes eID, bool bConstructorCall);static void AfterCvTeam_reset(CvTeam* self, TeamTypes eID, bool bConstructorCall);static void ReplaceCvTeam_reset(void (*original)(CvTeam*, TeamTypes, bool), CvTeam* self, TeamTypes eID, bool bConstructorCall);CivRegisterBefore<CivHooks::CvTeam_reset>(host, &BeforeCvTeam_reset);CivRegisterAfter<CivHooks::CvTeam_reset>(host, &AfterCvTeam_reset);CivRegisterReplace<CivHooks::CvTeam_reset>(host, &ReplaceCvTeam_reset);
Code
242// FUNCTION: reset()243// Initializes data members that are serialized.244void CvTeam::reset(TeamTypes eID, bool bConstructorCall)245{246 //--------------------------------247 // Uninit class248 uninit();249250 m_eID = eID;251252 if(!bConstructorCall)253 {254 //Collect sizes255 int numVoteSourceInfos = GC.getNumVoteSourceInfos();256 int numVictoryInfos = GC.getNumVictoryInfos();257 int numSmallAwardInfos = GC.getNumSmallAwardInfos();258 int numRouteInfos = GC.getNumRouteInfos();259 int numBuildInfos = GC.getNumBuildInfos();260 int numProjectInfos = GC.getNumProjectInfos();261 int numUnitClassInfos = GC.getNumUnitClassInfos();262 int numBuildingClassInfos = GC.getNumBuildingClassInfos();263 int numBuildingInfos = GC.getNumBuildingInfos();264#if defined(MOD_API_UNIFIED_YIELDS)265 int numFeatureInfos = GC.getNumFeatureInfos();266#endif267 int numTerrainInfos = GC.getNumTerrainInfos();268 int numImprovementInfos = GC.getNumImprovementInfos();269270 //Perform batch allocation271 AllocData aData[] =272 {273 {&m_aiForceTeamVoteEligibilityCount, numVoteSourceInfos, 0},274275 {&m_abCanLaunch, numVictoryInfos, 0},276 {&m_abVictoryAchieved, numVictoryInfos, 0},277 {&m_abSmallAwardAchieved, numSmallAwardInfos, 0},278279 {&m_paiRouteChange, numRouteInfos, 0},280 {&m_paiBuildTimeChange, numBuildInfos, 0},281282 {&m_paiProjectCount, numProjectInfos, 0},283 {&m_paiProjectDefaultArtTypes, numProjectInfos, 0},284 {&m_paiProjectMaking, numProjectInfos, 0},285286 {&m_paiUnitClassCount, numUnitClassInfos, 0},287 {&m_paiBuildingClassCount, numBuildingClassInfos, 0},288 {&m_paiObsoleteBuildingCount, numBuildingInfos, 0},289 {&m_paiTerrainTradeCount, numTerrainInfos, 0},290 {&m_aiVictoryCountdown, numVictoryInfos, 0},291292#if defined(MOD_API_UNIFIED_YIELDS)293 // If adding more entries into this strucure, you also need to update CvTeamData in Cvteam.h to match294 {&m_ppaaiFeatureYieldChange, numFeatureInfos, NUM_YIELD_TYPES},295 {&m_ppaaiTerrainYieldChange, numTerrainInfos, NUM_YIELD_TYPES},296#endif297298 {&m_ppaaiImprovementYieldChange, numImprovementInfos, NUM_YIELD_TYPES},299 {&m_ppaaiImprovementNoFreshWaterYieldChange,numImprovementInfos, NUM_YIELD_TYPES},300 {&m_ppaaiImprovementFreshWaterYieldChange,numImprovementInfos, NUM_YIELD_TYPES}301 };302 m_BatchData.Alloc(aData);303304 //Init the data - it is valid now305 for(int i = 0; i < numVoteSourceInfos; i++)306 {307 m_aiForceTeamVoteEligibilityCount[i] = 0;308 }309 for(int i = 0; i < numVictoryInfos; i++)310 {311 m_abCanLaunch[i] = false;312 m_abVictoryAchieved[i] = false;313 m_aiVictoryCountdown[i] = -1;314 }315 for(int i = 0; i < numSmallAwardInfos; i++)316 {317 m_abSmallAwardAchieved[i] = false;318 }319 for(int i = 0; i < numRouteInfos; i++)320 {321 m_paiRouteChange[i] = 0;322 }323 for (int i = 0; i < numBuildInfos; i++)324 {325 m_paiBuildTimeChange[i] = 0;326 }327 for(int i = 0; i < numProjectInfos; i++)328 {329 m_paiProjectCount[i] = 0;330 m_paiProjectDefaultArtTypes[i] = 0;331 m_paiProjectMaking[i] = 0;332 }333 for(int i = 0; i < numUnitClassInfos; i++)334 {335 m_paiUnitClassCount[i] = 0;336 }337 for(int i = 0; i < numBuildingClassInfos; i++)338 {339 m_paiBuildingClassCount[i] = 0;340 }341 for(int i = 0; i < numBuildingInfos; i++)342 {343 m_paiObsoleteBuildingCount[i] = 0;344 }345 for(int i = 0; i < numTerrainInfos; i++)346 {347 m_paiTerrainTradeCount[i] = 0;348 }349350 for(int i = 0; i < MAX_TEAMS; i++)351 {352 m_aiTurnTeamMet[i] = -1;353 m_aiNumTurnsAtWar[i] = 0;354 m_aiNumTurnsLockedIntoWar[i] = 0;355 }356357#if defined(MOD_API_UNIFIED_YIELDS)358 for(int j = 0; j < NUM_YIELD_TYPES; j++)359 {360 for(int i = 0; i < numFeatureInfos; i++)361 {362 m_ppaaiFeatureYieldChange[i][j] = 0;363 }364365 for(int i = 0; i < numTerrainInfos; i++)366 {367 m_ppaaiTerrainYieldChange[i][j] = 0;368 }369 }370#endif371372 for(int i = 0; i < numImprovementInfos; i++)373 {374 for(int j = 0; j < NUM_YIELD_TYPES; j++)375 {376 m_ppaaiImprovementYieldChange[i][j] = 0;377 m_ppaaiImprovementNoFreshWaterYieldChange[i][j] = 0;378 m_ppaaiImprovementFreshWaterYieldChange[i][j] = 0;379 }380 }381382 m_pTeamTechs->Init(GC.GetGameTechs(), this);383 m_pavProjectArtTypes = FNEW(std::vector<int> [GC.getNumProjectInfos()], c_eCiv5GameplayDLL, 0);384 m_aeRevealedResources.clear();385 }386}