Bazaar developer reference

CvPlayer::reset(PlayerTypes, bool)

Defined in
CvPlayer.cpp, line 1112
Class
CvPlayer
Hook name
CivHooks::CvPlayer_reset

Hooks

static bool BeforeCvPlayer_reset(CvPlayer* self, PlayerTypes eID, bool bConstructorCall);static void AfterCvPlayer_reset(CvPlayer* self, PlayerTypes eID, bool bConstructorCall);static void ReplaceCvPlayer_reset(void (*original)(CvPlayer*, PlayerTypes, bool), CvPlayer* self, PlayerTypes eID, bool bConstructorCall);CivRegisterBefore<CivHooks::CvPlayer_reset>(host, &BeforeCvPlayer_reset);CivRegisterAfter<CivHooks::CvPlayer_reset>(host, &AfterCvPlayer_reset);CivRegisterReplace<CivHooks::CvPlayer_reset>(host, &ReplaceCvPlayer_reset);

Code

1110// FUNCTION: reset()1111// Initializes data members that are serialized.1112void CvPlayer::reset(PlayerTypes eID, bool bConstructorCall)1113{1114	m_syncArchive.reset();1115	//--------------------------------1116	// Uninit class1117	uninit();11181119	m_eID = eID;1120	if(m_eID != NO_PLAYER)1121	{1122		m_ePersonalityType = CvPreGame::leaderHead(m_eID); //??? Is this repeated data???1123	}1124	else1125	{1126		m_ePersonalityType = NO_LEADER;1127	}11281129	// tutorial info1130	m_bEverPoppedGoody = false;11311132	m_aiCityYieldChange.clear();1133	m_aiCityYieldChange.resize(NUM_YIELD_TYPES, 0);11341135	m_aiCoastalCityYieldChange.clear();1136	m_aiCoastalCityYieldChange.resize(NUM_YIELD_TYPES, 0);11371138	m_aiCapitalYieldChange.clear();1139	m_aiCapitalYieldChange.resize(NUM_YIELD_TYPES, 0);11401141	m_aiCapitalYieldPerPopChange.clear();1142	m_aiCapitalYieldPerPopChange.resize(NUM_YIELD_TYPES, 0);11431144	m_aiSeaPlotYield.clear();1145	m_aiSeaPlotYield.resize(NUM_YIELD_TYPES, 0);11461147	m_aiYieldRateModifier.clear();1148	m_aiYieldRateModifier.resize(NUM_YIELD_TYPES, 0);11491150	m_aiCapitalYieldRateModifier.clear();1151	m_aiCapitalYieldRateModifier.resize(NUM_YIELD_TYPES, 0);11521153	m_aiGreatWorkYieldChange.clear();1154	m_aiGreatWorkYieldChange.resize(NUM_YIELD_TYPES, 0);11551156	m_aiExtraYieldThreshold.clear();1157	m_aiExtraYieldThreshold.resize(NUM_YIELD_TYPES, 0);11581159	m_aiSpecialistExtraYield.clear();1160	m_aiSpecialistExtraYield.resize(NUM_YIELD_TYPES, 0);11611162	m_aiProximityToPlayer.clear();1163	m_aiProximityToPlayer.resize(MAX_PLAYERS, 0);11641165	m_aiResearchAgreementCounter.clear();1166	m_aiResearchAgreementCounter.resize(MAX_PLAYERS, 0);11671168	m_aiIncomingUnitTypes.clear();1169	m_aiIncomingUnitTypes.resize(MAX_PLAYERS, NO_UNIT);11701171	m_aiIncomingUnitCountdowns.clear();1172	m_aiIncomingUnitCountdowns.resize(MAX_PLAYERS, -1);11731174	m_aiMinorFriendshipAnchors.clear();1175	m_aiMinorFriendshipAnchors.resize(MAX_PLAYERS, 0);11761177	m_aiSiphonLuxuryCount.clear();1178	m_aiSiphonLuxuryCount.resize(MAX_PLAYERS, 0);11791180	m_aOptions.clear();11811182	m_strReligionKey = "";1183	m_strScriptData = "";1184	m_strEmbarkedGraphicOverride = "";11851186	if(!bConstructorCall)1187	{1188		CvAssertMsg(0 < GC.getNumResourceInfos(), "GC.getNumResourceInfos() is not greater than zero but it is used to allocate memory in CvPlayer::reset");1189		m_paiNumResourceUsed.clear();1190		m_paiNumResourceUsed.resize(GC.getNumResourceInfos(), 0);11911192		m_paiNumResourceTotal.clear();1193		m_paiNumResourceTotal.resize(GC.getNumResourceInfos(), 0);11941195		m_paiResourceGiftedToMinors.clear();1196		m_paiResourceGiftedToMinors.resize(GC.getNumResourceInfos(), 0);11971198		m_paiResourceExport.clear();1199		m_paiResourceExport.resize(GC.getNumResourceInfos(), 0);12001201		m_paiResourceImport.clear();1202		m_paiResourceImport.resize(GC.getNumResourceInfos(), 0);12031204		m_paiResourceFromMinors.clear();1205		m_paiResourceFromMinors.resize(GC.getNumResourceInfos(), 0);12061207		m_paiResourcesSiphoned.clear();1208		m_paiResourcesSiphoned.resize(GC.getNumResourceInfos(), 0);12091210		CvAssertMsg(0 < GC.getNumImprovementInfos(), "GC.getNumImprovementInfos() is not greater than zero but it is used to allocate memory in CvPlayer::reset");1211		m_paiImprovementCount.clear();1212		m_paiImprovementCount.resize(GC.getNumImprovementInfos(), 0);12131214		m_paiUnitCombatProductionModifiers.clear();1215		m_paiUnitCombatProductionModifiers.resize(GC.getNumUnitCombatClassInfos(), 0);12161217		m_paiUnitCombatFreeExperiences.clear();1218		m_paiUnitCombatFreeExperiences.resize(GC.getNumUnitCombatClassInfos(), 0);12191220		m_paiFreeBuildingCount.clear();1221		m_paiFreeBuildingCount.resize(GC.getNumBuildingInfos(), 0);12221223		m_paiFreePromotionCount.clear();1224		m_paiFreePromotionCount.resize(GC.getNumPromotionInfos(), 0);12251226		m_paiUnitClassCount.clear();1227		m_paiUnitClassCount.resize(GC.getNumUnitClassInfos(), 0);12281229		m_paiUnitClassMaking.clear();1230		m_paiUnitClassMaking.resize(GC.getNumUnitClassInfos(), 0);12311232		m_paiBuildingClassCount.clear();1233		m_paiBuildingClassCount.resize(GC.getNumBuildingClassInfos(), 0);12341235		m_paiBuildingClassMaking.clear();1236		m_paiBuildingClassMaking.resize(GC.getNumBuildingClassInfos(), 0);12371238		m_paiProjectMaking.clear();1239		m_paiProjectMaking.resize(GC.getNumProjectInfos(), 0);12401241		m_paiHurryCount.clear();1242		m_paiHurryCount.resize(GC.getNumHurryInfos(), 0);12431244		m_paiHurryModifier.clear();1245		m_paiHurryModifier.resize(GC.getNumHurryInfos(), 0);12461247		m_pabLoyalMember.clear();1248		m_pabLoyalMember.resize(GC.getNumVoteSourceInfos(), true);12491250		m_pabGetsScienceFromPlayer.clear();1251		m_pabGetsScienceFromPlayer.resize(MAX_CIV_PLAYERS, false);12521253		m_pEconomicAI->Init(GC.GetGameEconomicAIStrategies(), this);1254		m_pMilitaryAI->Init(GC.GetGameMilitaryAIStrategies(), this, GetDiplomacyAI());1255		m_pCitySpecializationAI->Init(GC.GetGameCitySpecializations(), this);1256		m_pWonderProductionAI->Init(GC.GetGameBuildings(), this, false);1257		m_pGrandStrategyAI->Init(GC.GetGameAIGrandStrategies(), this);1258		m_pDiplomacyAI->Init(this);1259		m_pReligions->Init(this);1260		m_pReligionAI->Init(GC.GetGameBeliefs(), this);1261		m_pPlayerTechs->Init(GC.GetGameTechs(), this, false);1262		m_pPlayerPolicies->Init(GC.GetGamePolicies(), this, false);1263		m_pTacticalAI->Init(this);1264		m_pHomelandAI->Init(this);1265		m_pMinorCivAI->Init(this);1266		m_pDealAI->Init(this);1267		m_pBuilderTaskingAI->Init(this);1268		m_pCityConnections->Init(this);1269		if(m_pNotifications)1270		{1271			m_pNotifications->Init(eID);1272		}1273#if defined(MOD_API_PLAYER_LOGS)1274		if(m_pDiplomacyLog)1275		{1276			m_pDiplomacyLog->Init(eID);1277		}1278		if(m_pMilitaryLog)1279		{1280			m_pMilitaryLog->Init(eID);1281		}1282#endif1283		if(m_pDiplomacyRequests)1284		{1285			m_pDiplomacyRequests->Init(eID);1286		}1287		m_pDangerPlots->Init(eID, false /*bAllocate*/);1288		m_pTreasury->Init(this);1289		m_pTraits->Init(GC.GetGameTraits(), this);1290		m_pEspionage->Init(this);1291		m_pEspionageAI->Init(this);1292		m_pTrade->Init(this);1293		m_pTradeAI->Init(this);1294		m_pLeagueAI->Init(this);1295		m_pCulture->Init(this);12961297		// Set up flavor manager1298		m_pFlavorManager->Init(this);12991300		// And if this is a real player, hook up the player-level flavor recipients1301		PlayerTypes p = GetID();1302		if(p != NO_PLAYER)1303		{1304			SlotStatus s = CvPreGame::slotStatus(p);1305			if((s == SS_TAKEN || s == SS_COMPUTER) && !isBarbarian())1306			{1307				m_pFlavorManager->AddFlavorRecipient(m_pPlayerTechs);1308				m_pFlavorManager->AddFlavorRecipient(m_pPlayerPolicies);1309				m_pFlavorManager->AddFlavorRecipient(m_pWonderProductionAI);1310			}1311		}13121313		Firaxis::Array< int, NUM_YIELD_TYPES > yield;1314		for(unsigned int j = 0; j < NUM_YIELD_TYPES; ++j)1315		{1316			yield[j] = 0;1317		}13181319		m_ppaaiSpecialistExtraYield.clear();1320		m_ppaaiSpecialistExtraYield.resize(GC.getNumSpecialistInfos());1321		for(unsigned int i = 0; i < m_ppaaiSpecialistExtraYield.size(); ++i)1322		{1323			m_ppaaiSpecialistExtraYield.setAt(i, yield);1324		}13251326#if defined(MOD_API_UNIFIED_YIELDS) && defined(MOD_API_PLOT_YIELDS)1327		m_ppiPlotYieldChange.clear();1328		m_ppiPlotYieldChange.resize(GC.getNumPlotInfos());1329		for(unsigned int i = 0; i < m_ppiPlotYieldChange.size(); ++i)1330		{1331			m_ppiPlotYieldChange[i] = yield;1332		}1333#endif13341335#if defined(MOD_API_UNIFIED_YIELDS)1336		m_ppiFeatureYieldChange.clear();1337		m_ppiFeatureYieldChange.resize(GC.getNumFeatureInfos());1338		for(unsigned int i = 0; i < m_ppiFeatureYieldChange.size(); ++i)1339		{1340			m_ppiFeatureYieldChange[i] = yield;1341		}1342		1343		m_ppiResourceYieldChange.clear();1344		m_ppiResourceYieldChange.resize(GC.getNumResourceInfos());1345		for(unsigned int i = 0; i < m_ppiResourceYieldChange.size(); ++i)1346		{1347			m_ppiResourceYieldChange[i] = yield;1348		}1349		1350		m_ppiTerrainYieldChange.clear();1351		m_ppiTerrainYieldChange.resize(GC.getNumTerrainInfos());1352		for(unsigned int i = 0; i < m_ppiTerrainYieldChange.size(); ++i)1353		{1354			m_ppiTerrainYieldChange[i] = yield;1355		}1356		1357		m_ppiTradeRouteYieldChange.clear();1358		m_ppiTradeRouteYieldChange.resize(NUM_DOMAIN_TYPES);1359		for(unsigned int i = 0; i < m_ppiTradeRouteYieldChange.size(); ++i)1360		{1361			m_ppiTradeRouteYieldChange[i] = yield;1362		}1363		1364		m_ppiSpecialistYieldChange.clear();1365		m_ppiSpecialistYieldChange.resize(GC.getNumSpecialistInfos());1366		for(unsigned int i = 0; i < m_ppiSpecialistYieldChange.size(); ++i)1367		{1368			m_ppiSpecialistYieldChange[i] = yield;1369		}1370		1371		m_ppiGreatPersonExpendedYield.clear();1372		m_ppiGreatPersonExpendedYield.resize(GC.getNumGreatPersonInfos());1373		for(unsigned int i = 0; i < m_ppiGreatPersonExpendedYield.size(); ++i)1374		{1375			m_ppiGreatPersonExpendedYield[i] = yield;1376		}1377		1378		m_piGoldenAgeGreatPersonRateModifier.clear();1379		m_piGoldenAgeGreatPersonRateModifier.resize(GC.getNumGreatPersonInfos(), 0);13801381		m_ppiUnimprovedFeatureYieldChange.clear();1382		m_ppiUnimprovedFeatureYieldChange.resize(GC.getNumFeatureInfos());1383		for(unsigned int i = 0; i < m_ppiUnimprovedFeatureYieldChange.size(); ++i)1384		{1385			m_ppiUnimprovedFeatureYieldChange[i] = yield;1386		}1387		1388		m_ppiCityYieldFromUnimprovedFeature.clear();1389		m_ppiCityYieldFromUnimprovedFeature.resize(GC.getNumFeatureInfos());1390		for(unsigned int i = 0; i < m_ppiCityYieldFromUnimprovedFeature.size(); ++i)1391		{1392			m_ppiCityYieldFromUnimprovedFeature[i] = yield;1393		}1394		1395		m_piYieldFromKills.clear();1396		m_piYieldFromKills.resize(NUM_YIELD_TYPES, 0);13971398		m_piYieldFromBarbarianKills.clear();1399		m_piYieldFromBarbarianKills.resize(NUM_YIELD_TYPES, 0);14001401		m_piYieldChangeTradeRoute.clear();1402		m_piYieldChangeTradeRoute.resize(NUM_YIELD_TYPES, 0);14031404		m_piYieldChangesNaturalWonder.clear();1405		m_piYieldChangesNaturalWonder.resize(NUM_YIELD_TYPES, 0);14061407		m_piYieldChangeWorldWonder.clear();1408		m_piYieldChangeWorldWonder.resize(NUM_YIELD_TYPES, 0);14091410		m_ppiBuildingClassYieldChange.clear();1411		m_ppiBuildingClassYieldChange.resize(GC.getNumBuildingClassInfos());1412		for(unsigned int i = 0; i < m_ppiBuildingClassYieldChange.size(); ++i)1413		{1414			m_ppiBuildingClassYieldChange.setAt(i, yield);1415		}1416#endif14171418		m_ppaaiImprovementYieldChange.clear();1419		m_ppaaiImprovementYieldChange.resize(GC.getNumImprovementInfos());1420		for(unsigned int i = 0; i < m_ppaaiImprovementYieldChange.size(); ++i)1421		{1422			m_ppaaiImprovementYieldChange.setAt(i, yield);1423		}14241425		m_ppaaiBuildingClassYieldMod.clear();1426		m_ppaaiBuildingClassYieldMod.resize(GC.getNumBuildingClassInfos());1427		for(unsigned int i = 0; i < m_ppaaiBuildingClassYieldMod.size(); ++i)1428		{1429			m_ppaaiBuildingClassYieldMod.setAt(i, yield);1430		}14311432		m_aVote.clear();1433		m_aUnitExtraCosts.clear();1434	}14351436	m_cities.RemoveAll();14371438	m_units.RemoveAll();14391440	m_armyAIs.RemoveAll();14411442	// loop through all entries freeing them up1443	std::map<int , CvAIOperation*>::iterator iter;1444	for(iter = m_AIOperations.begin(); iter != m_AIOperations.end(); ++iter)1445	{1446		delete(iter->second);1447	}1448	m_AIOperations.clear();14491450	if(!bConstructorCall)1451	{1452		AI_reset();1453	}1454}

Calls

Called by