Code
111// Public Functions...112CvCity::CvCity() :113 m_syncArchive(*this)114 , m_strNameIAmNotSupposedToBeUsedAnyMoreBecauseThisShouldNotBeCheckedAndWeNeedToPreserveSaveGameCompatibility("CvCity::m_strName", m_syncArchive, "")115 , m_eOwner("CvCity::m_eOwner", m_syncArchive, NO_PLAYER)116 , m_iX("CvCity::m_iX", m_syncArchive)117 , m_iY("CvCity::m_iY", m_syncArchive)118 , m_iID("CvCity::m_iID", m_syncArchive)119 , m_iRallyX("CvCity::m_iRallyX", m_syncArchive)120 , m_iRallyY("CvCity::m_iRallyY", m_syncArchive)121 , m_iGameTurnFounded("CvCity::m_iGameTurnFounded", m_syncArchive)122 , m_iGameTurnAcquired("CvCity::m_iGameTurnAcquired", m_syncArchive)123 , m_iGameTurnLastExpanded("CvCity::m_iGameTurnLastExpanded", m_syncArchive)124 , m_iPopulation("CvCity::m_iPopulation", m_syncArchive)125#if defined(MOD_GLOBAL_CITY_AUTOMATON_WORKERS)126 , m_iAutomatons(0)127#endif128 , m_iHighestPopulation("CvCity::m_iHighestPopulation", m_syncArchive)129 , m_iExtraHitPoints(0)130 , m_iNumGreatPeople("CvCity::m_iNumGreatPeople", m_syncArchive)131 , m_iBaseGreatPeopleRate("CvCity::m_iBaseGreatPeopleRate", m_syncArchive)132 , m_iGreatPeopleRateModifier("CvCity::m_iGreatPeopleRateModifier", m_syncArchive)133 , m_iJONSCultureStored("CvCity::m_iJONSCultureStored", m_syncArchive, true)134 , m_iJONSCultureLevel("CvCity::m_iJONSCultureLevel", m_syncArchive)135 , m_iJONSCulturePerTurnFromBuildings("CvCity::m_iJONSCulturePerTurnFromBuildings", m_syncArchive)136 , m_iJONSCulturePerTurnFromPolicies("CvCity::m_iJONSCulturePerTurnFromPolicies", m_syncArchive)137 , m_iJONSCulturePerTurnFromSpecialists("CvCity::m_iJONSCulturePerTurnFromSpecialists", m_syncArchive)138 , m_iJONSCulturePerTurnFromReligion("CvCity::m_iJONSCulturePerTurnFromReligion", m_syncArchive)139 , m_iFaithPerTurnFromBuildings(0)140 , m_iFaithPerTurnFromPolicies(0)141 , m_iFaithPerTurnFromReligion(0)142 , m_iCultureRateModifier("CvCity::m_iCultureRateModifier", m_syncArchive)143 , m_iNumWorldWonders("CvCity::m_iNumWorldWonders", m_syncArchive)144 , m_iNumTeamWonders("CvCity::m_iNumTeamWonders", m_syncArchive)145 , m_iNumNationalWonders("CvCity::m_iNumNationalWonders", m_syncArchive)146 , m_iWonderProductionModifier("CvCity::m_iWonderProductionModifier", m_syncArchive)147 , m_iCapturePlunderModifier("CvCity::m_iCapturePlunderModifier", m_syncArchive)148 , m_iPlotCultureCostModifier("CvCity::m_iPlotCultureCostModifier", m_syncArchive)149 , m_iPlotBuyCostModifier(0)150#if defined(MOD_BUILDINGS_CITY_WORKING)151 , m_iCityWorkingChange(0)152#endif153#if defined(MOD_BUILDINGS_CITY_AUTOMATON_WORKERS)154 , m_iCityAutomatonWorkersChange(0)155#endif156 , m_iMaintenance("CvCity::m_iMaintenance", m_syncArchive)157 , m_iHealRate("CvCity::m_iHealRate", m_syncArchive)158 , m_iNoOccupiedUnhappinessCount("CvCity::m_iNoOccupiedUnhappinessCount", m_syncArchive)159 , m_iFood("CvCity::m_iFood", m_syncArchive)160 , m_iFoodKept("CvCity::m_iFoodKept", m_syncArchive)161 , m_iMaxFoodKeptPercent("CvCity::m_iMaxFoodKeptPercent", m_syncArchive)162 , m_iOverflowProduction("CvCity::m_iOverflowProduction", m_syncArchive)163 , m_iFeatureProduction("CvCity::m_iFeatureProduction", m_syncArchive)164 , m_iMilitaryProductionModifier("CvCity::m_iMilitaryProductionModifier", m_syncArchive)165 , m_iSpaceProductionModifier("CvCity::m_iSpaceProductionModifier", m_syncArchive)166 , m_iFreeExperience("CvCity::m_iFreeExperience", m_syncArchive)167 , m_iCurrAirlift("CvCity::m_iCurrAirlift", m_syncArchive) // unused168 , m_iMaxAirUnits("CvCity::m_iMaxAirUnits", m_syncArchive)169 , m_iAirModifier("CvCity::m_iAirModifier", m_syncArchive) // unused170 , m_iNukeModifier("CvCity::m_iNukeModifier", m_syncArchive)171 , m_iCultureUpdateTimer("CvCity::m_iCultureUpdateTimer", m_syncArchive) // unused172 , m_iCitySizeBoost("CvCity::m_iCitySizeBoost", m_syncArchive)173 , m_iSpecialistFreeExperience("CvCity::m_iSpecialistFreeExperience", m_syncArchive)174 , m_iStrengthValue("CvCity::m_iStrengthValue", m_syncArchive, true)175 , m_iDamage("CvCity::m_iDamage", m_syncArchive)176 , m_iThreatValue("CvCity::m_iThreatValue", m_syncArchive, true)177 , m_iGarrisonedUnit("CvCity::m_iGarrisonedUnit", m_syncArchive) // unused178 , m_iResourceDemanded("CvCity::m_iResourceDemanded", m_syncArchive)179 , m_iWeLoveTheKingDayCounter("CvCity::m_iWeLoveTheKingDayCounter", m_syncArchive)180 , m_iLastTurnGarrisonAssigned("CvCity::m_iLastTurnGarrisonAssigned", m_syncArchive)181 , m_iThingsProduced("CvCity::m_iThingsProduced", m_syncArchive)182 , m_iDemandResourceCounter("CvCity::m_iDemandResourceCounter", m_syncArchive, true)183 , m_iResistanceTurns("CvCity::m_iResistanceTurns", m_syncArchive)184 , m_iRazingTurns("CvCity::m_iRazingTurns", m_syncArchive)185 , m_iCountExtraLuxuries("CvCity::m_iCountExtraLuxuries", m_syncArchive)186 , m_iCheapestPlotInfluence("CvCity::m_iCheapestPlotInfluence", m_syncArchive)187 , m_iEspionageModifier(0)188#if defined(MOD_RELIGION_CONVERSION_MODIFIERS)189 , m_iConversionModifier(0)190#endif191 , m_iTradeRouteRecipientBonus(0)192 , m_iTradeRouteTargetBonus(0)193 , m_unitBeingBuiltForOperation()194 , m_bNeverLost("CvCity::m_bNeverLost", m_syncArchive)195 , m_bDrafted("CvCity::m_bDrafted", m_syncArchive)196 , m_bAirliftTargeted("CvCity::m_bAirliftTargeted", m_syncArchive) // unused197 , m_bProductionAutomated("CvCity::m_bProductionAutomated", m_syncArchive)198 , m_bLayoutDirty("CvCity::m_bLayoutDirty", m_syncArchive)199 , m_bMadeAttack("CvCity::m_bMadeAttack", m_syncArchive)200 , m_bOccupied("CvCity::m_bOccupied", m_syncArchive)201 , m_bPuppet("CvCity::m_bPuppet", m_syncArchive)202 , m_bEverCapital("CvCity::m_bEverCapital", m_syncArchive)203 , m_bIndustrialRouteToCapital("CvCity::m_bIndustrialRouteToCapital", m_syncArchive)204 , m_bFeatureSurrounded("CvCity::m_bFeatureSurrounded", m_syncArchive)205 , m_ePreviousOwner("CvCity::m_ePreviousOwner", m_syncArchive)206 , m_eOriginalOwner("CvCity::m_eOriginalOwner", m_syncArchive)207 , m_ePlayersReligion("CvCity::m_ePlayersReligion", m_syncArchive)208 , m_aiSeaPlotYield("CvCity::m_aiSeaPlotYield", m_syncArchive)209 , m_aiRiverPlotYield("CvCity::m_aiRiverPlotYield", m_syncArchive)210 , m_aiLakePlotYield("CvCity::m_aiLakePlotYield", m_syncArchive)211 , m_aiSeaResourceYield("CvCity::m_aiSeaResourceYield", m_syncArchive)212 , m_aiBaseYieldRateFromTerrain("CvCity::m_aiBaseYieldRateFromTerrain", m_syncArchive, true)213 , m_aiBaseYieldRateFromBuildings("CvCity::m_aiBaseYieldRateFromBuildings", m_syncArchive)214 , m_aiBaseYieldRateFromSpecialists("CvCity::m_aiBaseYieldRateFromSpecialists", m_syncArchive)215 , m_aiBaseYieldRateFromMisc("CvCity::m_aiBaseYieldRateFromMisc", m_syncArchive)216 , m_aiYieldRateModifier("CvCity::m_aiYieldRateModifier", m_syncArchive)217 , m_aiYieldPerPop("CvCity::m_aiYieldPerPop", m_syncArchive)218 , m_aiPowerYieldRateModifier("CvCity::m_aiPowerYieldRateModifier", m_syncArchive)219 , m_aiResourceYieldRateModifier("CvCity::m_aiResourceYieldRateModifier", m_syncArchive)220 , m_aiExtraSpecialistYield("CvCity::m_aiExtraSpecialistYield", m_syncArchive)221 , m_aiProductionToYieldModifier("CvCity::m_aiProductionToYieldModifier", m_syncArchive)222 , m_aiDomainFreeExperience("CvCity::m_aiDomainFreeExperience", m_syncArchive)223 , m_aiDomainProductionModifier("CvCity::m_aiDomainProductionModifier", m_syncArchive)224 , m_abEverOwned("CvCity::m_abEverOwned", m_syncArchive)225 , m_abRevealed("CvCity::m_abRevealed", m_syncArchive, true)226 , m_strScriptData("CvCity::m_strScriptData", m_syncArchive)227 , m_paiNoResource("CvCity::m_paiNoResource", m_syncArchive)228 , m_paiFreeResource("CvCity::m_paiFreeResource", m_syncArchive)229 , m_paiNumResourcesLocal("CvCity::m_paiNumResourcesLocal", m_syncArchive)230 , m_paiProjectProduction("CvCity::m_paiProjectProduction", m_syncArchive)231 , m_paiSpecialistProduction("CvCity::m_paiSpecialistProduction", m_syncArchive)232 , m_paiUnitProduction("CvCity::m_paiUnitProduction", m_syncArchive)233 , m_paiUnitProductionTime("CvCity::m_paiUnitProductionTime", m_syncArchive)234 , m_paiSpecialistCount("CvCity::m_paiSpecialistCount", m_syncArchive)235 , m_paiMaxSpecialistCount("CvCity::m_paiMaxSpecialistCount", m_syncArchive)236 , m_paiForceSpecialistCount("CvCity::m_paiForceSpecialistCount", m_syncArchive)237 , m_paiFreeSpecialistCount("CvCity::m_paiFreeSpecialistCount", m_syncArchive)238 , m_paiImprovementFreeSpecialists("CvCity::m_paiImprovementFreeSpecialists", m_syncArchive)239 , m_paiUnitCombatFreeExperience("CvCity::m_paiUnitCombatFreeExperience", m_syncArchive)240 , m_paiUnitCombatProductionModifier("CvCity::m_paiUnitCombatProductionModifier", m_syncArchive)241 , m_paiFreePromotionCount("CvCity::m_paiFreePromotionCount", m_syncArchive)242 , m_iBaseHappinessFromBuildings(0)243 , m_iUnmoddedHappinessFromBuildings(0)244 , m_bRouteToCapitalConnectedLastTurn(false)245 , m_bRouteToCapitalConnectedThisTurn(false)246 , m_strName("")247 , m_orderQueue()248 , m_aaiBuildingSpecialistUpgradeProgresses(0)249 , m_ppaiResourceYieldChange(0)250 , m_ppaiFeatureYieldChange(0)251 , m_ppaiTerrainYieldChange(0)252#if defined(MOD_API_UNIFIED_YIELDS) && defined(MOD_API_PLOT_YIELDS)253 , m_ppaiPlotYieldChange(0)254#endif255 , m_pCityBuildings(FNEW(CvCityBuildings, c_eCiv5GameplayDLL, 0))256 , m_pCityStrategyAI(FNEW(CvCityStrategyAI, c_eCiv5GameplayDLL, 0))257 , m_pCityCitizens(FNEW(CvCityCitizens, c_eCiv5GameplayDLL, 0))258 , m_pCityReligions(FNEW(CvCityReligions, c_eCiv5GameplayDLL, 0))259 , m_pEmphases(FNEW(CvCityEmphases, c_eCiv5GameplayDLL, 0))260 , m_pCityEspionage(FNEW(CvCityEspionage, c_eCiv5GameplayDLL, 0))261 , m_pCityCulture(FNEW(CvCityCulture, c_eCiv5GameplayDLL, 0))262 , m_bombardCheckTurn(0)263 , m_iPopulationRank(0)264 , m_bPopulationRankValid(false)265 , m_aiBaseYieldRank("CvCity::m_aiBaseYieldRank", m_syncArchive)266 , m_abBaseYieldRankValid("CvCity::m_abBaseYieldRankValid", m_syncArchive)267 , m_aiYieldRank("CvCity::m_aiYieldRank", m_syncArchive)268 , m_abYieldRankValid("CvCity::m_abYieldRankValid", m_syncArchive)269 , m_bOwedCultureBuilding(false)270#if defined(MOD_BUGFIX_FREE_FOOD_BUILDING)271 , m_bOwedFoodBuilding(false)272#endif273{274 OBJECT_ALLOCATED275 FSerialization::citiesToCheck.insert(this);276277 reset(0, NO_PLAYER, 0, 0, true);278}