Bazaar developer reference

CvDeal::ChangeGoldTrade(PlayerTypes, int)

Defined in
CvDealClasses.cpp, line 1379
Class
CvDeal
Hook name
CivHooks::CvDeal_ChangeGoldTrade

Hooks

static bool BeforeCvDeal_ChangeGoldTrade(CvDeal* self, PlayerTypes eFrom, int iNewAmount, bool& result);static void AfterCvDeal_ChangeGoldTrade(CvDeal* self, PlayerTypes eFrom, int iNewAmount, bool& result);static bool ReplaceCvDeal_ChangeGoldTrade(bool (*original)(CvDeal*, PlayerTypes, int), CvDeal* self, PlayerTypes eFrom, int iNewAmount);CivRegisterBefore<CivHooks::CvDeal_ChangeGoldTrade>(host, &BeforeCvDeal_ChangeGoldTrade);CivRegisterAfter<CivHooks::CvDeal_ChangeGoldTrade>(host, &AfterCvDeal_ChangeGoldTrade);CivRegisterReplace<CivHooks::CvDeal_ChangeGoldTrade>(host, &ReplaceCvDeal_ChangeGoldTrade);

Code

1379bool CvDeal::ChangeGoldTrade(PlayerTypes eFrom, int iNewAmount)1380{1381	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.");13821383	int iOldValue;13841385	TradedItemList::iterator it;1386	for(it = m_TradedItems.begin(); it != m_TradedItems.end(); ++it)1387	{1388		if(it->m_eItemType == TRADE_ITEM_GOLD && it->m_eFromPlayer == eFrom)1389		{1390			// Reduce Gold value to 0 first, because otherwise IsPossibleToTradeItem will think we're trying to spend more than we have1391			iOldValue = it->m_iData1;1392			it->m_iData1 = 0;13931394			if(IsPossibleToTradeItem(eFrom, GetOtherPlayer(eFrom), TRADE_ITEM_GOLD, iNewAmount))1395			{1396				it->m_iData1 = iNewAmount;1397				return true;1398			}1399			// If we can't do this then restore the previous Gold quantity1400			else1401			{1402				it->m_iData1 = iOldValue;1403			}1404		}1405	}1406	return false;1407}

Calls

Called by