Hooks
static bool BeforeCvDeal_AddResourceTrade(CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration);static void AfterCvDeal_AddResourceTrade(CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration);static void ReplaceCvDeal_AddResourceTrade(void (*original)(CvDeal*, PlayerTypes, ResourceTypes, int, int), CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration);CivRegisterBefore<CivHooks::CvDeal_AddResourceTrade>(host, &BeforeCvDeal_AddResourceTrade);CivRegisterAfter<CivHooks::CvDeal_AddResourceTrade>(host, &AfterCvDeal_AddResourceTrade);CivRegisterReplace<CivHooks::CvDeal_AddResourceTrade>(host, &ReplaceCvDeal_AddResourceTrade);
Code
998/// Insert a resource trade999void CvDeal::AddResourceTrade(PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration)1000{1001 CvAssertMsg(iAmount >= 0, "DEAL: Trying to add a negative amount of a Resource to a deal. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1002 CvAssertMsg(iDuration >= 0, "DEAL: Trying to add a negative duration to a TradeItem. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1003 CvAssertMsg(iDuration < GC.getGame().getEstimateEndTurn() * 2, "DEAL: Trade item has a crazy long duration (probably invalid). Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1004 CvAssertMsg(eFrom == m_eFromPlayer || eFrom == m_eToPlayer, "DEAL: Adding deal item for a player that's not actually in this deal! Please send Jon this with your last 5 autosaves and what changelist # you're playing.");10051006 if(IsPossibleToTradeItem(eFrom, GetOtherPlayer(eFrom), TRADE_ITEM_RESOURCES, eResource, iAmount))1007 {1008 CvTradedItem item;1009 item.m_eItemType = TRADE_ITEM_RESOURCES;1010 item.m_iDuration = iDuration;1011 //item.m_iFinalTurn = iDuration + GC.getGame().getGameTurn();1012 item.m_iFinalTurn = -1;1013 item.m_iData1 = (int)eResource;1014 item.m_iData2 = iAmount;1015 item.m_eFromPlayer = eFrom;1016 m_TradedItems.push_back(item);1017 }1018 else1019 {1020 CvAssertMsg(false, "DEAL: Trying to add an invalid Resource to a deal");1021 }1022}