Bazaar developer reference

CvPlayerTrade::GetNumPotentialConnections(CvCity *, DomainTypes)

Defined in
CvTradeClasses.cpp, line 3067
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_GetNumPotentialConnections

Hooks

static bool BeforeCvPlayerTrade_GetNumPotentialConnections(CvPlayerTrade* self, CvCity* pFromCity, DomainTypes eDomain, int& result);static void AfterCvPlayerTrade_GetNumPotentialConnections(CvPlayerTrade* self, CvCity* pFromCity, DomainTypes eDomain, int& result);static int ReplaceCvPlayerTrade_GetNumPotentialConnections(int (*original)(CvPlayerTrade*, CvCity*, DomainTypes), CvPlayerTrade* self, CvCity* pFromCity, DomainTypes eDomain);CivRegisterBefore<CivHooks::CvPlayerTrade_GetNumPotentialConnections>(host, &BeforeCvPlayerTrade_GetNumPotentialConnections);CivRegisterAfter<CivHooks::CvPlayerTrade_GetNumPotentialConnections>(host, &AfterCvPlayerTrade_GetNumPotentialConnections);CivRegisterReplace<CivHooks::CvPlayerTrade_GetNumPotentialConnections>(host, &ReplaceCvPlayerTrade_GetNumPotentialConnections);

Code

3067int CvPlayerTrade::GetNumPotentialConnections (CvCity* pFromCity, DomainTypes eDomain)3068{3069	CvGameTrade* pGameTrade = GC.getGame().GetGameTrade();30703071	int iNumValid = 0;3072	for (uint ui = 0; ui < MAX_CIV_PLAYERS; ui++)3073	{3074		PlayerTypes ePlayer = (PlayerTypes)ui;30753076		if (!GET_PLAYER(ePlayer).isAlive())3077		{3078			continue;3079		}30803081		if (GET_PLAYER(ePlayer).isBarbarian())3082		{3083			continue;3084		}30853086		int iLoop;3087		CvCity* pLoopCity;3088		for(pLoopCity = GET_PLAYER(ePlayer).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER(ePlayer).nextCity(&iLoop))3089		{3090			bool bCheckPath = true;3091			for (uint uiConnectionTypes = 0; uiConnectionTypes < NUM_TRADE_CONNECTION_TYPES; uiConnectionTypes++)3092			{3093				// Check the trade route, ignoring the path for now3094				if (CanCreateTradeRoute(pFromCity, pLoopCity, eDomain, (TradeConnectionType)uiConnectionTypes, false, false))3095				{3096					// Now test the path3097					if (bCheckPath)3098					{3099						bool bTradeAvailable = pGameTrade->IsValidTradeRoutePath(pFromCity, pLoopCity, eDomain);3100						if (!bTradeAvailable)3101							break;		// If there is no path for this domain, just skip the rest of the connection tests.31023103						bCheckPath = false;		// No need to check the path for this domain again3104					}31053106					iNumValid++;3107				}3108			}3109		}3110	}31113112	return iNumValid;3113}

Calls

Called by