Bazaar developer reference

CvGameDeals::DoCancelDealsBetweenPlayers(PlayerTypes, PlayerTypes)

Defined in
CvDealClasses.cpp, line 3104
Class
CvGameDeals
Hook name
CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers

Hooks

static bool BeforeCvGameDeals_DoCancelDealsBetweenPlayers(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);static void AfterCvGameDeals_DoCancelDealsBetweenPlayers(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);static void ReplaceCvGameDeals_DoCancelDealsBetweenPlayers(void (*original)(CvGameDeals*, PlayerTypes, PlayerTypes), CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);CivRegisterBefore<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &BeforeCvGameDeals_DoCancelDealsBetweenPlayers);CivRegisterAfter<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &AfterCvGameDeals_DoCancelDealsBetweenPlayers);CivRegisterReplace<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &ReplaceCvGameDeals_DoCancelDealsBetweenPlayers);

Code

3103/// Deals between these two Players were interrupted (death)3104void CvGameDeals::DoCancelDealsBetweenPlayers(PlayerTypes eFromPlayer, PlayerTypes eToPlayer)3105{3106	DealList::iterator it;3107	DealList tempDeals;31083109	if(m_CurrentDeals.size() > 0)3110	{3111		bool bSomethingChanged = false;31123113		// Copy the deals into a temporary container3114		for(it = m_CurrentDeals.begin(); it != m_CurrentDeals.end(); ++it)3115		{3116			tempDeals.push_back(*it);3117		}31183119		m_CurrentDeals.clear();3120		for(it = tempDeals.begin(); it != tempDeals.end(); ++it)3121		{3122			// Players on this deal match?3123			if(it->m_eFromPlayer == eFromPlayer && it->m_eToPlayer == eToPlayer ||3124			        it->m_eFromPlayer == eToPlayer && it->m_eToPlayer == eFromPlayer)3125			{3126				// Change final turn3127				it->m_iFinalTurn = GC.getGame().getGameTurn();31283129				// Cancel individual items3130				TradedItemList::iterator itemIter;3131				for(itemIter = it->m_TradedItems.begin(); itemIter != it->m_TradedItems.end(); ++itemIter)3132				{3133					bSomethingChanged = true;31343135					itemIter->m_iFinalTurn = GC.getGame().getGameTurn();31363137					eFromPlayer = itemIter->m_eFromPlayer;3138					eToPlayer = it->GetOtherPlayer(eFromPlayer);31393140					DoEndTradedItem(&*itemIter, eToPlayer, true);3141				}3142				m_HistoricalDeals.push_back(*it);3143			}3144			else3145			{3146				m_CurrentDeals.push_back(*it);3147			}3148		}31493150		if(bSomethingChanged)3151		{3152			// Update UI if we were involved in the deal3153			PlayerTypes eActivePlayer = GC.getGame().getActivePlayer();3154			if(eFromPlayer == eActivePlayer || eToPlayer == eActivePlayer)3155			{3156				GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);3157			}3158		}3159	}3160}

Calls

Called by