Code
24726//24727// read object from a stream24728// used during load24729//24730void CvPlayer::Read(FDataStream& kStream)24731{24732 // Init data before load24733 reset();2473424735 // Version number to maintain backwards compatibility24736 uint uiVersion;24737 kStream >> uiVersion;24738 MOD_SERIALIZE_INIT_READ(kStream);2473924740 kStream >> m_iStartingX;24741 kStream >> m_iStartingY;24742 kStream >> m_iTotalPopulation;24743 kStream >> m_iTotalLand;24744 kStream >> m_iTotalLandScored;24745 kStream >> m_iJONSCulturePerTurnForFree;24746 kStream >> m_iJONSCulturePerTurnFromMinorCivs;24747 kStream >> m_iJONSCultureCityModifier;24748 kStream >> m_iJONSCulture;24749 kStream >> m_iJONSCultureEverGenerated;24750 kStream >> m_iCulturePerWonder;24751 kStream >> m_iCultureWonderMultiplier;24752 kStream >> m_iCulturePerTechResearched;24753 kStream >> m_iFaith;24754 kStream >> m_iFaithEverGenerated;24755 kStream >> m_iHappiness;24756 kStream >> m_iUprisingCounter;24757 kStream >> m_iExtraHappinessPerLuxury;24758 kStream >> m_iUnhappinessFromUnits;24759 kStream >> m_iUnhappinessFromUnitsMod;24760 kStream >> m_iUnhappinessMod;24761 kStream >> m_iCityCountUnhappinessMod;24762 kStream >> m_iOccupiedPopulationUnhappinessMod;24763 kStream >> m_iCapitalUnhappinessMod;24764 kStream >> m_iCityRevoltCounter;24765 kStream >> m_iHappinessPerGarrisonedUnitCount;24766 kStream >> m_iHappinessPerTradeRouteCount;24767 kStream >> m_iHappinessPerXPopulation;24768 kStream >> m_iHappinessPerXPolicies;24769 if (uiVersion >= 8)24770 {24771 kStream >> m_iHappinessFromLeagues;24772 }24773 else24774 {24775 m_iHappinessFromLeagues = 0;24776 }24777 kStream >> m_iEspionageModifier;24778 kStream >> m_iSpyStartingRank;24779#if defined(MOD_RELIGION_CONVERSION_MODIFIERS)24780 MOD_SERIALIZE_READ(23, kStream, m_iConversionModifier, 0);24781#endif24782 if (uiVersion >= 14)24783 {24784 kStream >> m_iExtraLeagueVotes;24785 }24786 else24787 {24788 m_iExtraLeagueVotes = 0;24789 }24790 kStream >> m_iSpecialPolicyBuildingHappiness;24791 kStream >> m_iWoundedUnitDamageMod;24792 kStream >> m_iUnitUpgradeCostMod;24793 kStream >> m_iBarbarianCombatBonus;24794 kStream >> m_iAlwaysSeeBarbCampsCount;24795 kStream >> m_iHappinessFromBuildings;24796 kStream >> m_iHappinessPerCity;24797 kStream >> m_iAdvancedStartPoints;24798 kStream >> m_iAttackBonusTurns;24799 if (uiVersion >= 9)24800 {24801 kStream >> m_iCultureBonusTurns;24802 kStream >> m_iTourismBonusTurns;24803 }24804 else24805 {24806 m_iCultureBonusTurns = 0;24807 m_iTourismBonusTurns = 0;24808 }24809 kStream >> m_iGoldenAgeProgressMeter;24810 kStream >> m_iGoldenAgeMeterMod;24811 kStream >> m_iNumGoldenAges;24812 kStream >> m_iGoldenAgeTurns;24813 kStream >> m_iNumUnitGoldenAges;24814 kStream >> m_iStrikeTurns;24815 kStream >> m_iGoldenAgeModifier;24816#if defined(MOD_GLOBAL_TRULY_FREE_GP)24817 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatPeopleCreated, 0);24818 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatGeneralsCreated, 0);24819 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatAdmiralsCreated, 0);24820#if defined(MOD_GLOBAL_SEPARATE_GP_COUNTERS)24821 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatMerchantsCreated, 0);24822 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatScientistsCreated, 0);24823 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatEngineersCreated, 0);24824#endif24825 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatWritersCreated, 0);24826 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatArtistsCreated, 0);24827 MOD_SERIALIZE_READ(61, kStream, m_iFreeGreatMusiciansCreated, 0);24828#endif24829 kStream >> m_iGreatPeopleCreated;24830 kStream >> m_iGreatGeneralsCreated;24831 kStream >> m_iGreatAdmiralsCreated;24832#if defined(MOD_GLOBAL_SEPARATE_GP_COUNTERS)24833 MOD_SERIALIZE_READ(52, kStream, m_iGreatMerchantsCreated, 0);24834 MOD_SERIALIZE_READ(52, kStream, m_iGreatScientistsCreated, 0);24835 MOD_SERIALIZE_READ(52, kStream, m_iGreatEngineersCreated, 0);24836#endif24837 kStream >> m_iGreatWritersCreated;24838 kStream >> m_iGreatArtistsCreated;24839 kStream >> m_iGreatMusiciansCreated;24840 kStream >> m_iMerchantsFromFaith;24841 kStream >> m_iScientistsFromFaith;24842 kStream >> m_iWritersFromFaith;24843 kStream >> m_iArtistsFromFaith;24844 kStream >> m_iMusiciansFromFaith;24845 kStream >> m_iGeneralsFromFaith;24846 kStream >> m_iAdmiralsFromFaith;24847 kStream >> m_iEngineersFromFaith;24848 kStream >> m_iGreatPeopleThresholdModifier;24849 kStream >> m_iGreatGeneralsThresholdModifier;24850 kStream >> m_iGreatAdmiralsThresholdModifier;24851 kStream >> m_iGreatGeneralCombatBonus;24852 kStream >> m_iAnarchyNumTurns;24853 kStream >> m_iPolicyCostModifier;24854 kStream >> m_iGreatPeopleRateModifier;24855 kStream >> m_iGreatPeopleRateModFromBldgs;24856 kStream >> m_iGreatGeneralRateModifier;24857 kStream >> m_iGreatGeneralRateModFromBldgs;24858 kStream >> m_iDomesticGreatGeneralRateModifier;24859 kStream >> m_iDomesticGreatGeneralRateModFromBldgs;24860 kStream >> m_iGreatAdmiralRateModifier;24861 kStream >> m_iGreatWriterRateModifier;24862 kStream >> m_iGreatArtistRateModifier;24863 kStream >> m_iGreatMusicianRateModifier;24864 kStream >> m_iGreatMerchantRateModifier;24865 kStream >> m_iGreatScientistRateModifier;24866 if (uiVersion >= 10)24867 {24868 kStream >> m_iGreatScientistBeakerModifier;24869 }24870 else24871 {24872 m_iGreatScientistBeakerModifier = 0;24873 }24874 if (uiVersion >= 13)24875 {24876 kStream >> m_iGreatEngineerRateModifier;24877 }24878 else24879 {24880 m_iGreatEngineerRateModifier = 0;24881 }24882 kStream >> m_iGreatPersonExpendGold;24883 kStream >> m_iMaxGlobalBuildingProductionModifier;24884 kStream >> m_iMaxTeamBuildingProductionModifier;24885 kStream >> m_iMaxPlayerBuildingProductionModifier;24886 kStream >> m_iFreeExperience;24887 kStream >> m_iFreeExperienceFromBldgs;24888 kStream >> m_iFreeExperienceFromMinors;24889 kStream >> m_iFeatureProductionModifier;24890 kStream >> m_iWorkerSpeedModifier;24891 kStream >> m_iImprovementCostModifier;24892 kStream >> m_iImprovementUpgradeRateModifier;24893 kStream >> m_iSpecialistProductionModifier;24894 kStream >> m_iMilitaryProductionModifier;24895 kStream >> m_iSpaceProductionModifier;24896 kStream >> m_iCityDefenseModifier;24897 kStream >> m_iUnitFortificationModifier;24898 kStream >> m_iUnitBaseHealModifier;24899 kStream >> m_iWonderProductionModifier;24900 kStream >> m_iSettlerProductionModifier;24901 kStream >> m_iCapitalSettlerProductionModifier;24902 kStream >> m_iUnitProductionMaintenanceMod;24903 kStream >> m_iPolicyCostBuildingModifier;24904 kStream >> m_iPolicyCostMinorCivModifier;24905 kStream >> m_iInfluenceSpreadModifier;24906 if (uiVersion >= 15)24907 {24908 kStream >> m_iExtraVotesPerDiplomat;24909 }24910 else24911 {24912 m_iExtraVotesPerDiplomat = 0;24913 }24914 kStream >> m_iNumNukeUnits;24915 kStream >> m_iNumOutsideUnits;24916 kStream >> m_iBaseFreeUnits;24917 kStream >> m_iBaseFreeMilitaryUnits;24918 kStream >> m_iFreeUnitsPopulationPercent;24919 kStream >> m_iFreeMilitaryUnitsPopulationPercent;24920 kStream >> m_iGoldPerUnit;24921 kStream >> m_iGoldPerMilitaryUnit;24922 kStream >> m_iRouteGoldMaintenanceMod;24923 kStream >> m_iBuildingGoldMaintenanceMod;24924 kStream >> m_iUnitGoldMaintenanceMod;24925 kStream >> m_iUnitSupplyMod;24926 kStream >> m_iExtraUnitCost;24927 kStream >> m_iNumMilitaryUnits;24928 kStream >> m_iHappyPerMilitaryUnit;24929 kStream >> m_iHappinessToCulture;24930 kStream >> m_iHappinessToScience;24931 kStream >> m_iHalfSpecialistUnhappinessCount;24932 kStream >> m_iHalfSpecialistFoodCount;24933 kStream >> m_iMilitaryFoodProductionCount;24934 kStream >> m_iGoldenAgeCultureBonusDisabledCount;24935 kStream >> m_iSecondReligionPantheonCount;24936 if (uiVersion >= 2)24937 {24938 kStream >> m_iEnablesSSPartHurryCount;24939 }24940 else24941 {24942 m_iEnablesSSPartHurryCount = 0;24943 }24944 if (uiVersion >= 3)24945 {24946 kStream >> m_iEnablesSSPartPurchaseCount;24947 }24948 else24949 {24950 m_iEnablesSSPartPurchaseCount = 0;24951 }24952 kStream >> m_iConscriptCount;24953 kStream >> m_iMaxConscript;24954 kStream >> m_iHighestUnitLevel;24955 kStream >> m_iOverflowResearch;24956 kStream >> m_iExpModifier;24957 kStream >> m_iExpInBorderModifier;24958 kStream >> m_iLevelExperienceModifier;24959 kStream >> m_iMinorQuestFriendshipMod;24960 kStream >> m_iMinorGoldFriendshipMod;24961 kStream >> m_iMinorFriendshipMinimum;24962 kStream >> m_iMinorFriendshipDecayMod;24963 kStream >> m_iMinorScienceAlliesCount;24964 kStream >> m_iMinorResourceBonusCount;24965 if (uiVersion >= 12)24966 {24967 kStream >> m_iAbleToAnnexCityStatesCount;24968 }24969 else24970 {24971 m_iAbleToAnnexCityStatesCount = 0;24972 }24973 kStream >> m_iConversionTimer;24974 kStream >> m_iCapitalCityID;24975 kStream >> m_iCitiesLost;24976 kStream >> m_iMilitaryMight;24977 kStream >> m_iEconomicMight;24978 kStream >> m_iTurnMightRecomputed;24979 kStream >> m_iNewCityExtraPopulation;24980 kStream >> m_iFreeFoodBox;24981 kStream >> m_iScenarioScore1;24982 kStream >> m_iScenarioScore2;24983 kStream >> m_iScenarioScore3;24984 kStream >> m_iScoreFromFutureTech;24985 kStream >> m_iScenarioScore4;24986 kStream >> m_iCombatExperience;24987 kStream >> m_iNavalCombatExperience;24988 kStream >> m_iLifetimeCombatExperience;24989#if defined(MOD_UNITS_XP_TIMES_100)24990 MOD_SERIALIZE_READ(74, kStream, m_iCombatExperienceTimes100, m_iCombatExperience*100);24991 MOD_SERIALIZE_READ(74, kStream, m_iNavalCombatExperienceTimes100, m_iNavalCombatExperience*100);24992 MOD_SERIALIZE_READ(74, kStream, m_iLifetimeCombatExperienceTimes100, m_iLifetimeCombatExperience*100);24993#endif24994 kStream >> m_iBorderObstacleCount;24995 kStream >> m_iNextOperationID;24996 kStream >> m_iCostNextPolicy;24997 kStream >> m_iNumBuilders;24998 kStream >> m_iMaxNumBuilders;24999 kStream >> m_iCityStrengthMod;25000 kStream >> m_iCityGrowthMod;25001 kStream >> m_iCapitalGrowthMod;25002 kStream >> m_iNumPlotsBought;25003 kStream >> m_iPlotGoldCostMod;25004#if defined(MOD_TRAITS_CITY_WORKING) || defined(MOD_BUILDINGS_CITY_WORKING) || defined(MOD_POLICIES_CITY_WORKING) || defined(MOD_TECHS_CITY_WORKING)25005 MOD_SERIALIZE_READ(23, kStream, m_iCityWorkingChange, 0);25006#endif25007#if defined(MOD_TRAITS_CITY_AUTOMATON_WORKERS) || defined(MOD_BUILDINGS_CITY_AUTOMATON_WORKERS) || defined(MOD_POLICIES_CITY_AUTOMATON_WORKERS) || defined(MOD_TECHS_CITY_AUTOMATON_WORKERS)25008 MOD_SERIALIZE_READ(90, kStream, m_iCityAutomatonWorkersChange, 0);25009#endif25010 kStream >> m_iPlotCultureCostModifier;25011 kStream >> m_iPlotCultureExponentModifier;25012 kStream >> m_iNumCitiesPolicyCostDiscount;25013 kStream >> m_iGarrisonFreeMaintenanceCount;25014 kStream >> m_iGarrisonedCityRangeStrikeModifier;25015 kStream >> m_iNumCitiesFreeCultureBuilding;25016 kStream >> m_iNumCitiesFreeFoodBuilding;25017 kStream >> m_iUnitPurchaseCostModifier;25018 kStream >> m_iAllFeatureProduction;25019 kStream >> m_iCityDistanceHighwaterMark;25020 kStream >> m_iOriginalCapitalX;25021 kStream >> m_iOriginalCapitalY;25022 kStream >> m_iNumWonders;25023 kStream >> m_iNumPolicies;25024 kStream >> m_iNumGreatPeople;25025 kStream >> m_iCityConnectionHappiness;25026 kStream >> m_iHolyCityID;25027 kStream >> m_iTurnsSinceSettledLastCity;25028 kStream >> m_iNumNaturalWondersDiscoveredInArea;25029 kStream >> m_iStrategicResourceMod;25030 kStream >> m_iSpecialistCultureChange;25031 kStream >> m_iGreatPeopleSpawnCounter;25032 kStream >> m_iFreeTechCount;25033 kStream >> m_iMedianTechPercentage;25034 kStream >> m_iNumFreePolicies;25035 kStream >> m_iNumFreePoliciesEver;25036 if (uiVersion >= 16)25037 {25038 kStream >> m_iNumFreeTenets;25039 }25040 else25041 {25042 m_iNumFreeTenets = 0;25043 }25044 kStream >> m_iNumFreeGreatPeople;25045 kStream >> m_iNumMayaBoosts;25046 kStream >> m_iNumFaithGreatPeople;25047 kStream >> m_iNumArchaeologyChoices;2504825049 int temp;25050 kStream >> temp;25051 m_eFaithPurchaseType = (FaithPurchaseTypes)temp;25052 kStream >> m_iFaithPurchaseIndex;2505325054 if (uiVersion >= 6)25055 {25056 kStream >> m_iMaxEffectiveCities;25057 }25058 else25059 {25060 m_iMaxEffectiveCities = 1;25061 }2506225063 kStream >> m_iLastSliceMoved;25064 kStream >> m_bHasBetrayedMinorCiv;25065 kStream >> m_bAlive;25066 kStream >> m_bEverAlive;25067 kStream >> m_bBeingResurrected;25068 kStream >> m_bTurnActive;25069 kStream >> m_bAutoMoves;25070 kStream >> m_bEndTurn;25071 kStream >> m_bDynamicTurnsSimultMode;25072 kStream >> m_bPbemNewTurn;25073 kStream >> m_bExtendedGame;25074 kStream >> m_bFoundedFirstCity;25075 kStream >> m_iNumCitiesFounded;25076 kStream >> m_bStrike;25077 kStream >> m_bCramped;25078 kStream >> m_bLostCapital;25079 kStream >> m_eConqueror;25080 kStream >> m_bHasAdoptedStateReligion;25081 kStream >> m_bAlliesGreatPersonBiasApplied;25082 kStream >> m_eID;25083 kStream >> m_ePersonalityType;25084 kStream >> m_aiCityYieldChange;25085 kStream >> m_aiCoastalCityYieldChange;25086 kStream >> m_aiCapitalYieldChange;25087 kStream >> m_aiCapitalYieldPerPopChange;25088 kStream >> m_aiSeaPlotYield;25089 kStream >> m_aiYieldRateModifier;25090 kStream >> m_aiCapitalYieldRateModifier;2509125092 if (uiVersion >= 4)25093 {25094 kStream >> m_aiGreatWorkYieldChange;25095 }25096 else25097 {25098 m_aiGreatWorkYieldChange.clear();25099 m_aiGreatWorkYieldChange.resize(NUM_YIELD_TYPES, 0);25100 }25101 kStream >> m_aiExtraYieldThreshold;25102 kStream >> m_aiSpecialistExtraYield;25103 kStream >> m_aiProximityToPlayer;25104 kStream >> m_aiResearchAgreementCounter;25105 if (uiVersion >= 5)25106 {25107 kStream >> m_aiIncomingUnitTypes;25108 kStream >> m_aiIncomingUnitCountdowns;25109 }25110 else25111 {25112 std::vector<int> aiOldIncomingUnitTypes;25113 kStream >> aiOldIncomingUnitTypes;25114 m_aiIncomingUnitTypes.clear();25115 m_aiIncomingUnitTypes.resize(MAX_PLAYERS, NO_UNIT);2511625117 // m_aiIncomingUnitCountdowns was not serialized before...curious25118 m_aiIncomingUnitCountdowns.clear();25119 m_aiIncomingUnitCountdowns.resize(MAX_PLAYERS, -1);25120 }25121 25122 kStream >> m_aiMinorFriendshipAnchors;25123 if (uiVersion >= 7)25124 {25125 kStream >> m_aiSiphonLuxuryCount;25126 }25127 else25128 {25129 m_aiSiphonLuxuryCount.clear();25130 m_aiSiphonLuxuryCount.resize(MAX_PLAYERS, 0);25131 }25132 kStream >> m_strReligionKey;25133 kStream >> m_strScriptData;2513425135 CvAssertMsg((0 < GC.getNumResourceInfos()), "GC.getNumResourceInfos() is not greater than zero but it is expected to be in CvPlayer::read");25136 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiNumResourceUsed.dirtyGet());25137 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiNumResourceTotal.dirtyGet());25138 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiResourceGiftedToMinors.dirtyGet());25139 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiResourceExport.dirtyGet());25140 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiResourceImport.dirtyGet());25141 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiResourceFromMinors.dirtyGet());25142 if (uiVersion >= 7)25143 {25144 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiResourcesSiphoned.dirtyGet());25145 }25146 else25147 {25148 m_paiResourcesSiphoned.clear();25149 m_paiResourcesSiphoned.resize(GC.getNumResourceInfos(), 0);25150 }2515125152 kStream >> m_paiImprovementCount;2515325154 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiFreeBuildingCount.dirtyGet());25155 CvInfosSerializationHelper::ReadHashedDataArray(kStream, m_paiFreePromotionCount.dirtyGet());2515625157 kStream >> m_paiUnitCombatProductionModifiers;25158 kStream >> m_paiUnitCombatFreeExperiences;25159 kStream >> m_paiUnitClassCount;25160 kStream >> m_paiUnitClassMaking;25161 kStream >> m_paiBuildingClassCount;25162 kStream >> m_paiBuildingClassMaking;25163 kStream >> m_paiProjectMaking;25164 kStream >> m_paiHurryCount;25165 kStream >> m_paiHurryModifier;2516625167 CvAssertMsg((0 < GC.getNumTechInfos()), "GC.getNumTechInfos() is not greater than zero but it is expected to be in CvPlayer::read");2516825169 kStream >> m_pabLoyalMember;2517025171 kStream >> m_pabGetsScienceFromPlayer;2517225173 m_pPlayerPolicies->Read(kStream);25174 m_pEconomicAI->Read(kStream);25175 m_pCitySpecializationAI->Read(kStream);25176 m_pWonderProductionAI->Read(kStream);25177 m_pMilitaryAI->Read(kStream);25178 m_pGrandStrategyAI->Read(kStream);25179 m_pDiplomacyAI->Read(kStream);25180 m_pReligions->Read(kStream);25181 m_pReligionAI->Read(kStream);25182 m_pPlayerTechs->Read(kStream);25183 m_pFlavorManager->Read(kStream);25184 m_pTacticalAI->Read(kStream);25185 m_pHomelandAI->Read(kStream);25186 m_pMinorCivAI->Read(kStream);25187 m_pDealAI->Read(kStream);25188 m_pBuilderTaskingAI->Read(kStream);25189 m_pCityConnections->Read(kStream);25190 m_pDangerPlots->Read(kStream);25191 m_pTraits->Read(kStream);25192 kStream >> *m_pEspionage;25193 kStream >> *m_pEspionageAI;25194 kStream >> *m_pTrade;25195 kStream >> *m_pTradeAI;25196 m_pLeagueAI->Read(kStream);25197 kStream >> *m_pCulture;2519825199 bool bReadNotifications;25200 kStream >> bReadNotifications;25201 if(bReadNotifications)25202 {25203 m_pNotifications = FNEW(CvNotifications, c_eCiv5GameplayDLL, 0);25204 m_pNotifications->Init(GetID());25205 m_pNotifications->Read(kStream);25206 }25207#if defined(MOD_API_PLAYER_LOGS)25208 // MOD_SERIALIZE_READ - v68 broke the save format couldn't be helped, but don't make a habit of it!!!25209 bool bReadDiplomacyLog;25210 kStream >> bReadDiplomacyLog;25211 if (bReadDiplomacyLog)25212 {25213 m_pDiplomacyLog = FNEW(CvEventLog, c_eCiv5GameplayDLL, 0);25214 m_pDiplomacyLog->Init(GetID());25215 m_pDiplomacyLog->Read(kStream);25216 }2521725218 // MOD_SERIALIZE_READ - v68 broke the save format couldn't be helped, but don't make a habit of it!!!25219 bool bReadMilitaryLog;25220 kStream >> bReadMilitaryLog;25221 if (bReadMilitaryLog)25222 {25223 m_pMilitaryLog = FNEW(CvEventLog, c_eCiv5GameplayDLL, 0);25224 m_pMilitaryLog->Init(GetID());25225 m_pMilitaryLog->Read(kStream);25226 }25227#endif25228 m_pTreasury->Read(kStream);2522925230 // If this is a real player, hook up the player-level flavor recipients25231 if(GetID() != NO_PLAYER)25232 {25233 SlotStatus s = CvPreGame::slotStatus(GetID());25234 if((s == SS_TAKEN || s == SS_COMPUTER) && !isBarbarian())25235 {25236 m_pFlavorManager->AddFlavorRecipient(m_pPlayerTechs, false /*bPropogateFlavors*/);25237 m_pFlavorManager->AddFlavorRecipient(m_pPlayerPolicies, false /*bPropogateFlavors*/);25238 m_pFlavorManager->AddFlavorRecipient(m_pWonderProductionAI, false /*bPropogateFlavors*/);25239 }25240 }2524125242 kStream >> m_ppaaiSpecialistExtraYield;25243#if defined(MOD_API_UNIFIED_YIELDS) && defined(MOD_API_PLOT_YIELDS)25244 // MOD_SERIALIZE_READ - v57/v58/v59 broke the save format couldn't be helped, but don't make a habit of it!!!25245 kStream >> m_ppiPlotYieldChange;25246#endif25247#if defined(MOD_API_UNIFIED_YIELDS)25248 // MOD_SERIALIZE_READ - v57/v58/v59 and v61 broke the save format couldn't be helped, but don't make a habit of it!!!25249 kStream >> m_ppiFeatureYieldChange;25250 kStream >> m_ppiResourceYieldChange;25251 kStream >> m_ppiTerrainYieldChange;25252 kStream >> m_ppiTradeRouteYieldChange;25253 kStream >> m_ppiSpecialistYieldChange;25254 kStream >> m_ppiGreatPersonExpendedYield;25255 kStream >> m_piGoldenAgeGreatPersonRateModifier;25256 kStream >> m_ppiUnimprovedFeatureYieldChange;25257 kStream >> m_ppiCityYieldFromUnimprovedFeature;25258 kStream >> m_piYieldFromKills;25259 kStream >> m_piYieldFromBarbarianKills;25260 kStream >> m_piYieldChangeTradeRoute;25261 kStream >> m_piYieldChangesNaturalWonder;25262 kStream >> m_piYieldChangeWorldWonder;25263 kStream >> m_ppiBuildingClassYieldChange;25264#endif25265 kStream >> m_ppaaiImprovementYieldChange;2526625267 kStream >> m_UnitCycle;25268 kStream >> m_researchQueue;2526925270 kStream >> m_bEverPoppedGoody;25271 kStream >> m_bEverTrainedBuilder;25272 kStream >> m_eEndTurnBlockingType;25273 kStream >> m_iEndTurnBlockingNotificationIndex;2527425275 kStream >> m_cityNames;2527625277 kStream >> m_cities;25278 kStream >> m_units;25279 kStream >> m_armyAIs;2528025281 {25282 m_AIOperations.clear();25283 uint iSize;25284 int iID;25285 int iOperationType;25286 kStream >> iSize;25287 for(uint i = 0; i < iSize; i++)25288 {25289 kStream >> iID;25290 kStream >> iOperationType;25291 CvAIOperation* pThisOperation = CvAIOperation::CreateOperation((AIOperationTypes)iOperationType, m_eID);25292 pThisOperation->Read(kStream);25293 m_AIOperations.insert(std::make_pair(pThisOperation->GetID(), pThisOperation));25294 }25295 }2529625297 if (uiVersion <= 10)25298 {25299 // Unused popup queue25300 int iSize;25301 kStream >> iSize;25302 CvAssert(iSize == 0);25303 }2530425305 kStream >> m_ReplayDataSets;25306 kStream >> m_ReplayDataSetValues;2530725308 kStream >> m_aVote;25309 kStream >> m_aUnitExtraCosts;2531025311 // reading plot values25312 {25313 m_aiPlots.clear();25314 m_aiPlots.push_back_copy(-1, GC.getMap().numPlots());2531525316 // trying to cut down how big saves are25317 int iSize;25318 kStream >> iSize;25319 for(int i = 0; i < iSize; i++)25320 {25321 kStream >> m_aiPlots[i];25322 }25323 }2532425325 if(!isBarbarian())25326 {25327 // Get the NetID from the initialization structure25328 setNetID(gDLL->getAssignedNetworkID(GetID()));25329 }2533025331 kStream >> m_iPopRushHurryCount;25332 kStream >> m_iTotalImprovementsBuilt;2533325334 m_bfEverConqueredBy.ClearAll();25335 int iSize;25336 kStream >> iSize;25337 for(int i = 0; i < iSize; i++)25338 {25339 bool bValue;25340 kStream >> bValue;25341 if(bValue)25342 {25343 m_bfEverConqueredBy.SetBit(i);25344 }25345 }2534625347 kStream >> m_strEmbarkedGraphicOverride;25348 m_kPlayerAchievements.Read(kStream);2534925350 if(GetID() < MAX_MAJOR_CIVS)25351 {25352 if(!m_pDiplomacyRequests)25353 m_pDiplomacyRequests = FNEW(CvDiplomacyRequests, c_eCiv5GameplayDLL, 0);25354 else25355 m_pDiplomacyRequests->Uninit();2535625357 m_pDiplomacyRequests->Init(GetID());25358 //m_pDiplomacyRequests->Read(kStream);25359 }2536025361 if(m_bTurnActive)25362 GC.getGame().changeNumGameTurnActive(1, std::string("setTurnActive() [loading save game] for player ") + getName());2536325364}