Bazaar developer reference

CvDeal::GetNumResource(PlayerTypes, ResourceTypes)

Defined in
CvDealClasses.cpp, line 828
Class
CvDeal
Hook name
CivHooks::CvDeal_GetNumResource

Hooks

static bool BeforeCvDeal_GetNumResource(CvDeal* self, PlayerTypes ePlayer, ResourceTypes eResource, int& result);static void AfterCvDeal_GetNumResource(CvDeal* self, PlayerTypes ePlayer, ResourceTypes eResource, int& result);static int ReplaceCvDeal_GetNumResource(int (*original)(CvDeal*, PlayerTypes, ResourceTypes), CvDeal* self, PlayerTypes ePlayer, ResourceTypes eResource);CivRegisterBefore<CivHooks::CvDeal_GetNumResource>(host, &BeforeCvDeal_GetNumResource);CivRegisterAfter<CivHooks::CvDeal_GetNumResource>(host, &AfterCvDeal_GetNumResource);CivRegisterReplace<CivHooks::CvDeal_GetNumResource>(host, &ReplaceCvDeal_GetNumResource);

Code

827/// Get the number of resources available according to the deal being renewed and what's not on the table828int CvDeal::GetNumResource(PlayerTypes ePlayer, ResourceTypes eResource)829{830	int iNumAvailable = GET_PLAYER(ePlayer).getNumResourceAvailable(eResource, false);831	int iNumInRenewDeal = 0;832	int iNumInExistingDeal = 0;833834835	CvDeal* pRenewDeal = GET_PLAYER(ePlayer).GetDiplomacyAI()->GetDealToRenew();836	if (!pRenewDeal)837	{838		PlayerTypes eOtherPlayer = GetOtherPlayer(ePlayer);839		if (eOtherPlayer != NO_PLAYER)840		{841			pRenewDeal = GET_PLAYER(eOtherPlayer).GetDiplomacyAI()->GetDealToRenew();842		}843	}844845	if (pRenewDeal)846	{847		// count any that are in the renew deal848		TradedItemList::iterator it;849		for(it = pRenewDeal->m_TradedItems.begin(); it != pRenewDeal->m_TradedItems.end(); ++it)850		{851			if(it->m_eItemType == TRADE_ITEM_RESOURCES && it->m_eFromPlayer == ePlayer && (ResourceTypes)it->m_iData1 == eResource)852			{853				// credit the amount854				iNumInRenewDeal += it->m_iData2;855			}856		}857858		// remove any that are in this deal859		for(it = m_TradedItems.begin(); it != m_TradedItems.end(); ++it)860		{861			if(it->m_eItemType == TRADE_ITEM_RESOURCES && it->m_eFromPlayer == ePlayer && (ResourceTypes)it->m_iData1 == eResource)862			{863				iNumInExistingDeal += it->m_iData2;864			}865		}866	}867868	return iNumAvailable + iNumInRenewDeal - iNumInExistingDeal;869}

Calls

Called by