Bazaar developer reference

CvPlayerTrade::CanCreateTradeRoute(DomainTypes)

Defined in
CvTradeClasses.cpp, line 2874
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_DomainTypes

Hooks

static bool BeforeCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes(CvPlayerTrade* self, DomainTypes eDomain, bool& result);static void AfterCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes(CvPlayerTrade* self, DomainTypes eDomain, bool& result);static bool ReplaceCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes(bool (*original)(CvPlayerTrade*, DomainTypes), CvPlayerTrade* self, DomainTypes eDomain);CivRegisterBefore<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_DomainTypes>(host, &BeforeCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes);CivRegisterAfter<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_DomainTypes>(host, &AfterCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes);CivRegisterReplace<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_DomainTypes>(host, &ReplaceCvPlayerTrade_CanCreateTradeRoute_with_DomainTypes);

Code

2873//	Can the player create any trade routes in the domain, even with itself.2874bool CvPlayerTrade::CanCreateTradeRoute(DomainTypes eDomain)2875{2876	CvGameTrade* pGameTrade = GC.getGame().GetGameTrade();28772878	int iCityLoop;2879	CvCity* pLoopCity;2880	for(pLoopCity = m_pPlayer->firstCity(&iCityLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iCityLoop))2881	{2882		// Get a sorted list of nearby cities 2883		const CvCityManager::CityList& kNearbyCities = CvCityManager::GetNearbyCities(pLoopCity);2884		for (CvCityManager::CityList::const_iterator itr = kNearbyCities.begin(); itr != kNearbyCities.end(); ++itr)2885		{2886			CvCity* pLoopCity2 = (*itr);2887			for (uint uiConnectionTypes = 0; uiConnectionTypes < NUM_TRADE_CONNECTION_TYPES; uiConnectionTypes++)2888			{2889				// Check the route, but not the path2890				if (CanCreateTradeRoute(pLoopCity, pLoopCity2, eDomain, (TradeConnectionType)uiConnectionTypes, false, false))2891				{2892					// Check the path2893					if (pGameTrade->IsValidTradeRoutePath(pLoopCity, pLoopCity2, eDomain))2894						return true;28952896					// else we can just break out of the loop2897					break;2898				}2899			}2900		}2901	}29022903	return false;29042905}

Calls

Called by