Hooks
static bool Beforeop_shr_with_FDataStream_CvGameTrade(FDataStream& loadFrom, CvGameTrade& writeTo, FDataStream*& result);static void Afterop_shr_with_FDataStream_CvGameTrade(FDataStream& loadFrom, CvGameTrade& writeTo, FDataStream*& result);static FDataStream& Replaceop_shr_with_FDataStream_CvGameTrade(FDataStream& (*original)(FDataStream&, CvGameTrade&), FDataStream& loadFrom, CvGameTrade& writeTo);CivRegisterBefore<CivHooks::op_shr_with_FDataStream_CvGameTrade>(host, &Beforeop_shr_with_FDataStream_CvGameTrade);CivRegisterAfter<CivHooks::op_shr_with_FDataStream_CvGameTrade>(host, &Afterop_shr_with_FDataStream_CvGameTrade);CivRegisterReplace<CivHooks::op_shr_with_FDataStream_CvGameTrade>(host, &Replaceop_shr_with_FDataStream_CvGameTrade);
Code
1698/// Serialization read1699FDataStream& operator>>(FDataStream& loadFrom, CvGameTrade& writeTo)1700{1701 int plotsX[MAX_PLOTS_TO_DISPLAY];1702 int plotsY[MAX_PLOTS_TO_DISPLAY];1703 int nPlots;17041705 uint uiVersion;1706 loadFrom >> uiVersion;1707 MOD_SERIALIZE_INIT_READ(loadFrom);17081709 int iNum = 0;1710 loadFrom >> iNum;1711 for (int i = 0; i < iNum; i++)1712 {1713 TradeConnection kTradeConnection;1714 writeTo.m_aTradeConnections.push_back(kTradeConnection);1715 if (uiVersion >= 1)1716 {1717 loadFrom >> writeTo.m_aTradeConnections[i].m_iID;1718 }1719 else1720 {1721 writeTo.m_aTradeConnections[i].m_iID = MAX_INT;1722 }17231724 loadFrom >> writeTo.m_aTradeConnections[i].m_iOriginX;1725 loadFrom >> writeTo.m_aTradeConnections[i].m_iOriginY;1726 loadFrom >> writeTo.m_aTradeConnections[i].m_iDestX;1727 loadFrom >> writeTo.m_aTradeConnections[i].m_iDestY;1728 loadFrom >> writeTo.m_aTradeConnections[i].m_eOriginOwner;1729 loadFrom >> writeTo.m_aTradeConnections[i].m_eDestOwner;1730 int iDomain;1731 loadFrom >> iDomain;1732 writeTo.m_aTradeConnections[i].m_eDomain = (DomainTypes)iDomain;1733 int iConnectionType;1734 loadFrom >> iConnectionType;1735 writeTo.m_aTradeConnections[i].m_eConnectionType = (TradeConnectionType)iConnectionType;17361737 loadFrom >> writeTo.m_aTradeConnections[i].m_iTradeUnitLocationIndex;1738 loadFrom >> writeTo.m_aTradeConnections[i].m_bTradeUnitMovingForward;17391740 loadFrom >> writeTo.m_aTradeConnections[i].m_unitID;17411742 loadFrom >> writeTo.m_aTradeConnections[i].m_iCircuitsCompleted;1743 loadFrom >> writeTo.m_aTradeConnections[i].m_iCircuitsToComplete;17441745 if (uiVersion >= 2)1746 {1747 loadFrom >> writeTo.m_aTradeConnections[i].m_iTurnRouteComplete;1748 }1749 else1750 {1751 writeTo.m_aTradeConnections[i].m_iTurnRouteComplete = 0;1752 }17531754#if defined(MOD_API_TRADEROUTES)1755 MOD_SERIALIZE_READ(23, loadFrom, writeTo.m_aTradeConnections[i].m_bTradeUnitRecalled, false);1756#endif17571758 int iNum2 = 0;1759 loadFrom >> iNum2;17601761 for (int i2 = 0; i2 < iNum2; i2++)1762 {1763 TradeConnectionPlot kTradeConnectionPlot;1764 writeTo.m_aTradeConnections[i].m_aPlotList.push_back(kTradeConnectionPlot);1765 loadFrom >> writeTo.m_aTradeConnections[i].m_aPlotList[i2].m_iX;1766 loadFrom >> writeTo.m_aTradeConnections[i].m_aPlotList[i2].m_iY;1767 1768 if (i2 < MAX_PLOTS_TO_DISPLAY) {1769 plotsX[i2] = writeTo.m_aTradeConnections[i].m_aPlotList[i2].m_iX;1770 plotsY[i2] = writeTo.m_aTradeConnections[i].m_aPlotList[i2].m_iY;1771 }1772 }17731774 nPlots = iNum2;1775 if (nPlots > 0)1776 {1777 if (nPlots > MAX_PLOTS_TO_DISPLAY)1778 nPlots = MAX_PLOTS_TO_DISPLAY;1779 gDLL->TradeVisuals_NewRoute(i,writeTo.m_aTradeConnections[i].m_eOriginOwner,writeTo.m_aTradeConnections[i].m_eConnectionType,nPlots,plotsX,plotsY);1780 gDLL->TradeVisuals_UpdateRouteDirection(i, writeTo.m_aTradeConnections[i].m_bTradeUnitMovingForward);1781 }17821783 for (uint ui = 0; ui < NUM_YIELD_TYPES; ui++)1784 {1785 loadFrom >> writeTo.m_aTradeConnections[i].m_aiOriginYields[ui];1786 loadFrom >> writeTo.m_aTradeConnections[i].m_aiDestYields[ui];1787 }1788 }17891790 if (uiVersion >= 3)1791 {1792 for (uint ui = 0; ui < MAX_MAJOR_CIVS; ui++)1793 {1794 for (uint ui2 = 0; ui2 < MAX_MAJOR_CIVS; ui2++)1795 {1796 loadFrom >> writeTo.m_aaiTechDifference[ui][ui2];1797 }1798 }1799 }1800 else1801 {1802 for (uint ui = 0; ui < MAX_MAJOR_CIVS; ui++)1803 {1804 for (uint ui2 = 0; ui2 < MAX_MAJOR_CIVS; ui2++)1805 {1806 writeTo.m_aaiTechDifference[ui][ui2] = 0;1807 }1808 }1809 }18101811 loadFrom >> writeTo.m_iNextID;18121813 return loadFrom;1814}