Hooks
static bool BeforeCvDeal_ChangeResourceTrade(CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration, bool& result);static void AfterCvDeal_ChangeResourceTrade(CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration, bool& result);static bool ReplaceCvDeal_ChangeResourceTrade(bool (*original)(CvDeal*, PlayerTypes, ResourceTypes, int, int), CvDeal* self, PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration);CivRegisterBefore<CivHooks::CvDeal_ChangeResourceTrade>(host, &BeforeCvDeal_ChangeResourceTrade);CivRegisterAfter<CivHooks::CvDeal_ChangeResourceTrade>(host, &AfterCvDeal_ChangeResourceTrade);CivRegisterReplace<CivHooks::CvDeal_ChangeResourceTrade>(host, &ReplaceCvDeal_ChangeResourceTrade);
Code
1460bool CvDeal::ChangeResourceTrade(PlayerTypes eFrom, ResourceTypes eResource, int iAmount, int iDuration)1461{1462 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.");1463 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.");1464 CvAssertMsg(eFrom == m_eFromPlayer || eFrom == m_eToPlayer, "DEAL: Changing 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.");14651466 TradedItemList::iterator it;1467 for(it = m_TradedItems.begin(); it != m_TradedItems.end(); ++it)1468 {1469 if(it->m_eItemType == TRADE_ITEM_RESOURCES &&1470 it->m_eFromPlayer == eFrom &&1471 (ResourceTypes)it->m_iData1 == eResource)1472 {1473 if(IsPossibleToTradeItem(eFrom, GetOtherPlayer(eFrom), TRADE_ITEM_RESOURCES, eResource, iAmount))1474 {1475 it->m_iData2 = iAmount;1476 it->m_iDuration = iDuration;1477 it->m_iFinalTurn = iDuration + GC.getGame().getGameTurn();1478 return true;1479 }1480 }1481 }1482 return false;1483}