Bazaar developer reference

CvCity::write(FDataStream &) const

Defined in
CvCity.cpp, line 15513
Class
CvCity
Hook name
CivHooks::CvCity_write

Hooks

static bool BeforeCvCity_write(const CvCity* self, FDataStream& kStream);static void AfterCvCity_write(const CvCity* self, FDataStream& kStream);static void ReplaceCvCity_write(void (*original)(const CvCity*, FDataStream&), const CvCity* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvCity_write>(host, &BeforeCvCity_write);CivRegisterAfter<CivHooks::CvCity_write>(host, &AfterCvCity_write);CivRegisterReplace<CivHooks::CvCity_write>(host, &ReplaceCvCity_write);

Code

15513void CvCity::write(FDataStream& kStream) const15514{15515	VALIDATE_OBJECT1551615517	// Current version number15518	uint uiVersion = 6;15519	kStream << uiVersion;15520	MOD_SERIALIZE_INIT_WRITE(kStream);1552115522	kStream << m_iID;15523	kStream << m_iX;15524	kStream << m_iY;15525	kStream << m_iRallyX;15526	kStream << m_iRallyY;15527	kStream << m_iGameTurnFounded;15528	kStream << m_iGameTurnAcquired;15529	kStream << m_iPopulation;15530	kStream << m_iHighestPopulation;15531#if defined(MOD_GLOBAL_CITY_AUTOMATON_WORKERS)15532	MOD_SERIALIZE_WRITE(kStream, m_iAutomatons);15533#endif15534#if defined(MOD_BUILDINGS_CITY_AUTOMATON_WORKERS)15535	MOD_SERIALIZE_WRITE(kStream, m_iCityAutomatonWorkersChange);15536#endif15537	kStream << m_iNumGreatPeople;15538	kStream << m_iBaseGreatPeopleRate;15539	kStream << m_iGreatPeopleRateModifier;15540	kStream << m_iJONSCultureStored;15541	kStream << m_iJONSCultureLevel;15542	kStream << m_iJONSCulturePerTurnFromBuildings;15543	kStream << m_iJONSCulturePerTurnFromPolicies;15544	kStream << m_iJONSCulturePerTurnFromSpecialists;15545	kStream << m_iJONSCulturePerTurnFromReligion;15546	kStream << m_iFaithPerTurnFromBuildings;15547	kStream << m_iFaithPerTurnFromPolicies;15548	kStream << m_iFaithPerTurnFromReligion;15549	kStream << m_iCultureRateModifier;15550	kStream << m_iNumWorldWonders;15551	kStream << m_iNumTeamWonders;15552	kStream << m_iNumNationalWonders;15553	kStream << m_iWonderProductionModifier;15554	kStream << m_iCapturePlunderModifier;  // Added for Version 315555	kStream << m_iPlotCultureCostModifier; // Added for Version 315556	kStream << m_iPlotBuyCostModifier; // Added for Version 1215557#if defined(MOD_BUILDINGS_CITY_WORKING)15558	MOD_SERIALIZE_WRITE(kStream, m_iCityWorkingChange);15559#endif15560#if defined(MOD_BUILDINGS_CITY_AUTOMATON_WORKERS)15561	// SEE ABOVE - MOD_SERIALIZE_WRITE(kStream, m_iCityAutomatonWorkersChange);15562#endif15563	kStream << m_iMaintenance;15564	kStream << m_iHealRate;15565	kStream << m_iEspionageModifier;15566#if defined(MOD_RELIGION_CONVERSION_MODIFIERS)15567	MOD_SERIALIZE_WRITE(kStream, m_iConversionModifier);15568#endif15569	kStream << m_iNoOccupiedUnhappinessCount;15570	kStream << m_iFood;15571	kStream << m_iFoodKept;15572	kStream << m_iMaxFoodKeptPercent;15573	kStream << m_iOverflowProduction;15574	kStream << m_iFeatureProduction;15575	kStream << m_iMilitaryProductionModifier;15576	kStream << m_iSpaceProductionModifier;15577	kStream << m_iFreeExperience;15578	kStream << m_iCurrAirlift; // unused15579	kStream << m_iMaxAirUnits;15580	kStream << m_iAirModifier; // unused15581	kStream << m_iNukeModifier;15582	kStream << m_iTradeRouteTargetBonus;15583	kStream << m_iTradeRouteRecipientBonus;15584	kStream << m_iCultureUpdateTimer;15585	kStream << m_iCitySizeBoost;15586	kStream << m_iSpecialistFreeExperience;15587	kStream << m_iStrengthValue;15588	kStream << m_iDamage;15589	kStream << m_iThreatValue;15590	kStream << m_iGarrisonedUnit;15591	CvInfosSerializationHelper::WriteHashed(kStream, (ResourceTypes)(m_iResourceDemanded.get()));15592	kStream << m_iWeLoveTheKingDayCounter;15593	kStream << m_iLastTurnGarrisonAssigned;15594	kStream << m_iThingsProduced;15595	kStream << m_iDemandResourceCounter;15596	kStream << m_iResistanceTurns;15597	kStream << m_iRazingTurns;15598	kStream << m_iCountExtraLuxuries;15599	kStream << m_iCheapestPlotInfluence;15600	kStream << m_unitBeingBuiltForOperation.m_iOperationID;15601	kStream << m_unitBeingBuiltForOperation.m_iArmyID;15602	kStream << m_unitBeingBuiltForOperation.m_iSlotID;1560315604	kStream << m_bNeverLost;15605	kStream << m_bDrafted;15606	kStream << m_bAirliftTargeted;  // unused15607	kStream << m_bProductionAutomated;15608	kStream << m_bMadeAttack;15609	kStream << m_bOccupied;15610	kStream << m_bPuppet;15611	kStream << m_bEverCapital;15612	kStream << m_bIndustrialRouteToCapital;15613	kStream << m_bFeatureSurrounded;1561415615	kStream << m_eOwner;15616	kStream << m_ePreviousOwner;15617	kStream << m_eOriginalOwner;15618	kStream << m_ePlayersReligion;1561915620	kStream << m_aiSeaPlotYield;15621	kStream << m_aiRiverPlotYield;15622	kStream << m_aiLakePlotYield;15623	kStream << m_aiSeaResourceYield;15624	kStream << m_aiBaseYieldRateFromTerrain;15625	kStream << m_aiBaseYieldRateFromBuildings;15626	kStream << m_aiBaseYieldRateFromSpecialists;15627	kStream << m_aiBaseYieldRateFromMisc;15628	kStream << m_aiBaseYieldRateFromReligion;15629	kStream << m_aiYieldPerPop;15630	kStream << m_aiYieldPerReligion;15631	kStream << m_aiYieldRateModifier;15632	kStream << m_aiPowerYieldRateModifier;15633	kStream << m_aiResourceYieldRateModifier;15634	kStream << m_aiExtraSpecialistYield;15635	kStream << m_aiProductionToYieldModifier;15636	kStream << m_aiDomainFreeExperience;15637	kStream << m_aiDomainProductionModifier;1563815639	kStream << m_abEverOwned;15640	kStream << m_abRevealed;1564115642	kStream << m_strName;15643	kStream << m_strScriptData;1564415645	CvInfosSerializationHelper::WriteHashedDataArray<ResourceTypes, int>(kStream, m_paiNoResource);15646	CvInfosSerializationHelper::WriteHashedDataArray<ResourceTypes, int>(kStream, m_paiFreeResource);15647	CvInfosSerializationHelper::WriteHashedDataArray<ResourceTypes, int>(kStream, m_paiNumResourcesLocal);1564815649	kStream << m_paiSpecialistProduction;15650	kStream << m_paiProjectProduction;1565115652	m_pCityBuildings->Write(kStream);1565315654	CvInfosSerializationHelper::WriteHashedDataArray<UnitTypes, int>(kStream, m_paiUnitProduction);15655	CvInfosSerializationHelper::WriteHashedDataArray<UnitTypes, int>(kStream, m_paiUnitProductionTime);1565615657	kStream << m_paiSpecialistCount;15658	kStream << m_paiMaxSpecialistCount;15659	kStream << m_paiForceSpecialistCount;15660	kStream << m_paiFreeSpecialistCount;15661	kStream << m_paiImprovementFreeSpecialists;15662	kStream << m_paiUnitCombatFreeExperience;15663	kStream << m_paiUnitCombatProductionModifier;1566415665	CvInfosSerializationHelper::WriteHashedDataArray<PromotionTypes, int>(kStream, m_paiFreePromotionCount);1566615667	//  Write m_orderQueue15668	UINT uLength = (UINT)m_orderQueue.getLength();15669	kStream << uLength;15670	for(UINT uIdx = 0; uIdx < uLength; ++uIdx)15671	{15672		OrderData* pData = m_orderQueue.getAt(uIdx);1567315674		kStream << pData->eOrderType;15675		// Now we have to translate the data because most of them contain indices into Infos tables and it is very bad to save an index since the table order can change15676		switch (pData->eOrderType)15677		{15678			case ORDER_TRAIN:15679				CvInfosSerializationHelper::WriteHashed(kStream, (UnitTypes)(pData->iData1));15680				kStream << pData->iData2;	// This is a UnitAIType, but no code respects the ordering in GC.getUnitAIInfo so just write out the index15681				break;1568215683			case ORDER_CONSTRUCT:15684				CvInfosSerializationHelper::WriteHashed(kStream, (BuildingTypes)pData->iData1);15685				kStream << pData->iData2;15686				break;1568715688			case ORDER_CREATE:15689				CvInfosSerializationHelper::WriteHashed(kStream, (ProjectTypes)pData->iData1);15690				kStream << pData->iData2;15691				break;1569215693			case ORDER_PREPARE:15694				CvInfosSerializationHelper::WriteHashed(kStream, (SpecialistTypes)pData->iData1);15695				kStream << pData->iData2;15696				break;1569715698			case ORDER_MAINTAIN:15699				CvInfosSerializationHelper::WriteHashed(kStream, (ProcessTypes)pData->iData1);15700				kStream << pData->iData2;15701				break;1570215703			default:15704				CvAssertMsg(false, "pData->eOrderType failed to match a valid option");15705				kStream << pData->iData1;15706				kStream << pData->iData2;15707				break;15708		}15709		kStream << pData->bSave;15710		kStream << pData->bRush;15711	}1571215713	CvInfosSerializationHelper::WriteHashedDataArray<ResourceTypes>(kStream, m_ppaiResourceYieldChange, NUM_YIELD_TYPES, GC.getNumResourceInfos());1571415715	CvInfosSerializationHelper::WriteHashedDataArray<FeatureTypes>(kStream, m_ppaiFeatureYieldChange, NUM_YIELD_TYPES, GC.getNumFeatureInfos());1571615717	CvInfosSerializationHelper::WriteHashedDataArray<TerrainTypes>(kStream, m_ppaiTerrainYieldChange, NUM_YIELD_TYPES, GC.getNumTerrainInfos());1571815719#if defined(MOD_API_UNIFIED_YIELDS) && defined(MOD_API_PLOT_YIELDS)15720	// MOD_SERIALIZE_WRITE - v57/v58/v59 broke the save format  couldn't be helped, but don't make a habit of it!!!15721	CvInfosSerializationHelper::WriteHashedDataArray<PlotTypes>(kStream, m_ppaiPlotYieldChange, NUM_YIELD_TYPES, GC.getNumPlotInfos());15722#endif1572315724	kStream << m_iPopulationRank;15725	kStream << m_bPopulationRankValid;15726	kStream << m_aiBaseYieldRank;15727	kStream << m_abBaseYieldRankValid;15728	kStream << m_aiYieldRank;15729	kStream << m_abYieldRankValid;1573015731	kStream << m_iGameTurnLastExpanded;1573215733	kStream << m_iBaseHappinessFromBuildings;15734	kStream << m_iUnmoddedHappinessFromBuildings;1573515736	kStream << m_bRouteToCapitalConnectedLastTurn;15737	kStream << m_bRouteToCapitalConnectedThisTurn;15738	kStream << m_strName;15739	kStream << m_bOwedCultureBuilding;15740#if defined(MOD_BUGFIX_FREE_FOOD_BUILDING)15741	MOD_SERIALIZE_WRITE(kStream, m_bOwedFoodBuilding);15742#endif1574315744	m_pCityStrategyAI->Write(kStream);15745	m_pCityCitizens->Write(kStream);15746	kStream << *m_pCityReligions;15747	m_pEmphases->Write(kStream);15748	kStream << *m_pCityEspionage;1574915750	kStream << m_iExtraHitPoints;15751}

Calls

Called by