Hooks
static bool BeforeCvPlot_write(const CvPlot* self, FDataStream& kStream);static void AfterCvPlot_write(const CvPlot* self, FDataStream& kStream);static void ReplaceCvPlot_write(void (*original)(const CvPlot*, FDataStream&), const CvPlot* self, FDataStream& kStream);CivRegisterBefore<CivHooks::CvPlot_write>(host, &BeforeCvPlot_write);CivRegisterAfter<CivHooks::CvPlot_write>(host, &AfterCvPlot_write);CivRegisterReplace<CivHooks::CvPlot_write>(host, &ReplaceCvPlot_write);
Code
10764//10765// write object to a stream10766// used during save10767//10768void CvPlot::write(FDataStream& kStream) const10769{10770 // Current version number10771 uint uiVersion = g_CurrentCvPlotVersion;10772 kStream << uiVersion;10773 MOD_SERIALIZE_INIT_WRITE(kStream);1077410775 kStream << m_iX;10776 kStream << m_iY;10777 kStream << m_iArea;10778 kStream << m_iFeatureVariety;10779 kStream << m_iOwnershipDuration;10780 kStream << m_iImprovementDuration;10781 kStream << m_iUpgradeProgress;10782 kStream << m_iCulture;10783 kStream << m_iNumMajorCivsRevealed;10784 kStream << m_iCityRadiusCount;10785 kStream << m_iReconCount;10786 kStream << m_iRiverCrossingCount;10787 kStream << m_iResourceNum;10788 kStream << m_cBuilderAIScratchPadPlayer;10789 kStream << m_sBuilderAIScratchPadTurn;10790 kStream << m_sBuilderAIScratchPadValue;10791 kStream << m_eBuilderAIScratchPadRoute;10792 kStream << m_iLandmass;10793 kStream << m_uiTradeRouteBitFlags;1079410795 kStream << m_bStartingPlot;10796 kStream << m_bHills;10797 kStream << m_bNEOfRiver;10798 kStream << m_bWOfRiver;10799 kStream << m_bNWOfRiver;10800 kStream << m_bPotentialCityWork;10801 kStream << m_bImprovementPillaged;10802 kStream << m_bRoutePillaged;10803 kStream << m_bBarbCampNotConverting;10804 kStream << m_bRoughFeature;10805 kStream << m_bResourceLinkedCityActive;10806 kStream << m_bImprovedByGiftFromMajor;10807 // m_bPlotLayoutDirty not saved10808 // m_bLayoutStateWorked not saved1080910810 kStream << m_eOwner;10811 kStream << m_ePlotType;10812 kStream << m_eTerrainType;10813 CvInfosSerializationHelper::WriteHashed(kStream, (const FeatureTypes)m_eFeatureType.get());10814 CvInfosSerializationHelper::WriteHashed(kStream, (const ResourceTypes)m_eResourceType);10815 CvInfosSerializationHelper::WriteHashed(kStream, (const ImprovementTypes)m_eImprovementType);10816 CvInfosSerializationHelper::WriteHashed(kStream, (const ImprovementTypes)m_eImprovementTypeUnderConstruction);10817 kStream << m_ePlayerBuiltImprovement;10818 kStream << m_ePlayerResponsibleForImprovement;10819 kStream << m_ePlayerResponsibleForRoute;10820 kStream << m_ePlayerThatClearedBarbCampHere;10821 kStream << m_eRouteType;10822#if defined(MOD_GLOBAL_STACKING_RULES)10823 MOD_SERIALIZE_WRITE(kStream, m_eUnitIncrement);10824#endif10825 kStream << m_eWorldAnchor;10826 kStream << m_cWorldAnchorData;10827 kStream << m_eRiverEFlowDirection;10828 kStream << m_eRiverSEFlowDirection;10829 kStream << m_eRiverSWFlowDirection;1083010831 kStream << m_plotCity.eOwner;10832 kStream << m_plotCity.iID;10833 kStream << m_workingCity.eOwner;10834 kStream << m_workingCity.iID;10835 kStream << m_workingCityOverride.eOwner;10836 kStream << m_workingCityOverride.iID;10837 kStream << m_ResourceLinkedCity.eOwner;10838 kStream << m_ResourceLinkedCity.iID;10839 kStream << m_purchaseCity.eOwner;10840 kStream << m_purchaseCity.iID;1084110842 for(uint i = 0; i < NUM_YIELD_TYPES; i++)10843 kStream << m_aiYield[i];1084410845 for(uint i = 0; i < REALLY_MAX_PLAYERS; i++)10846 kStream << m_aiFoundValue[i];1084710848 for(uint i = 0; i < REALLY_MAX_PLAYERS; i++)10849 kStream << m_aiPlayerCityRadiusCount[i];1085010851 for(uint i = 0; i < REALLY_MAX_TEAMS; i++)10852 kStream << m_aiVisibilityCount[i];1085310854 for(uint i = 0; i < REALLY_MAX_TEAMS; i++)10855 kStream << m_aiRevealedOwner[i];1085610857 kStream << m_cRiverCrossing;1085810859 //for(uint i = 0; i < REALLY_MAX_TEAMS;i++)10860 // kStream << m_abRevealed[i];1086110862 for(uint i = 0; i<PlotBoolField::eCount; ++i)10863 {10864 kStream << m_bfRevealed.m_dwBits[i];10865 }1086610867 for(uint i = 0; i < REALLY_MAX_TEAMS; i++)10868 kStream << m_abResourceForceReveal[i];1086910870 for(uint i = 0; i < REALLY_MAX_TEAMS; i++)10871 {10872 CvInfosSerializationHelper::WriteHashed(kStream, (const ImprovementTypes)m_aeRevealedImprovementType[i]);10873 }1087410875 for(uint i = 0; i < REALLY_MAX_TEAMS; i++)10876 kStream << m_aeRevealedRouteType[i];1087710878 for(uint i = 0; i < MAX_MAJOR_CIVS; i++)10879 kStream << m_abNoSettling[i];1088010881 // char * should have died in 1989...10882 bool hasScriptData = (m_szScriptData != NULL);10883 kStream << hasScriptData;10884 if(hasScriptData)10885 {10886 const std::string scriptData(m_szScriptData);10887 kStream << scriptData;10888 }1088910890 if(NULL == m_paiBuildProgress)10891 {10892 kStream << (int)0;10893 }10894 else10895 {10896 kStream << (int)GC.getNumBuildInfos();10897 BuildArrayHelpers::Write(kStream, m_paiBuildProgress, GC.getNumBuildInfos());10898 }1089910900 kStream << m_apaiInvisibleVisibilityCount;1090110902 // Write m_units.Write(kStream);10903 UINT uLength = (UINT)m_units.getLength();10904 kStream << uLength;10905 for(UINT uIdx = 0; uIdx < uLength; ++uIdx)10906 {10907 const IDInfo* pData = m_units.getAt(uIdx);1090810909 kStream << pData->eOwner;10910 kStream << pData->iID;10911 }1091210913 kStream << m_cContinentType;10914 kStream << m_kArchaeologyData;10915}