Bazaar developer reference

CvPlayerTrade::CanCreateTradeRoute(PlayerTypes, DomainTypes)

Defined in
CvTradeClasses.cpp, line 2841
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes

Hooks

static bool BeforeCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain, bool& result);static void AfterCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain, bool& result);static bool ReplaceCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(bool (*original)(CvPlayerTrade*, PlayerTypes, DomainTypes), CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain);CivRegisterBefore<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &BeforeCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);CivRegisterAfter<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &AfterCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);CivRegisterReplace<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &ReplaceCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);

Code

2841bool CvPlayerTrade::CanCreateTradeRoute(PlayerTypes eOtherPlayer, DomainTypes eDomain)2842{2843	CvGameTrade* pGameTrade = GC.getGame().GetGameTrade();28442845	int iCityLoop;2846	CvCity* pLoopCity;2847	for(pLoopCity = m_pPlayer->firstCity(&iCityLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iCityLoop))2848	{2849		int iCityLoop2;2850		CvCity* pLoopCity2;2851		for (pLoopCity2 = GET_PLAYER(eOtherPlayer).firstCity(&iCityLoop2); pLoopCity2 != NULL; pLoopCity2 = GET_PLAYER(eOtherPlayer).nextCity(&iCityLoop2))2852		{2853			for (uint uiConnectionTypes = 0; uiConnectionTypes < NUM_TRADE_CONNECTION_TYPES; uiConnectionTypes++)2854			{2855				// Check the route, but not the path2856				if (CanCreateTradeRoute(pLoopCity, pLoopCity2, eDomain, (TradeConnectionType)uiConnectionTypes, false, false))2857				{2858					// Check the path2859					if (pGameTrade->IsValidTradeRoutePath(pLoopCity, pLoopCity2, eDomain))2860						return true;28612862					// else we can just break out of the loop2863					break;2864				}2865			}2866		}2867	}28682869	return false;2870}

Calls