Bazaar developer reference

CvTreasury::HasCityConnectionRouteBetweenCities(CvCity *, CvCity *) const

Defined in
CvTreasury.cpp, line 331
Class
CvTreasury
Hook name
CivHooks::CvTreasury_HasCityConnectionRouteBetweenCities

Hooks

static bool BeforeCvTreasury_HasCityConnectionRouteBetweenCities(const CvTreasury* self, CvCity* pFirstCity, CvCity* pSecondCity, bool& result);static void AfterCvTreasury_HasCityConnectionRouteBetweenCities(const CvTreasury* self, CvCity* pFirstCity, CvCity* pSecondCity, bool& result);static bool ReplaceCvTreasury_HasCityConnectionRouteBetweenCities(bool (*original)(const CvTreasury*, CvCity*, CvCity*), const CvTreasury* self, CvCity* pFirstCity, CvCity* pSecondCity);CivRegisterBefore<CivHooks::CvTreasury_HasCityConnectionRouteBetweenCities>(host, &BeforeCvTreasury_HasCityConnectionRouteBetweenCities);CivRegisterAfter<CivHooks::CvTreasury_HasCityConnectionRouteBetweenCities>(host, &AfterCvTreasury_HasCityConnectionRouteBetweenCities);CivRegisterReplace<CivHooks::CvTreasury_HasCityConnectionRouteBetweenCities>(host, &ReplaceCvTreasury_HasCityConnectionRouteBetweenCities);

Code

329/// Returns the route-type between two cities330#if defined(MOD_EVENTS_CITY_CONNECTIONS)331bool CvTreasury::HasCityConnectionRouteBetweenCities(CvCity* pFirstCity, CvCity* pSecondCity) const332#else333bool CvTreasury::HasCityConnectionRouteBetweenCities(CvCity* pFirstCity, CvCity* pSecondCity, bool bBestRoute) const334#endif335{336	CvCityConnections* pCityConnections = m_pPlayer->GetCityConnections();337	FASSERT(pCityConnections, "m_pCityConnections is null");338	if(!pCityConnections)339	{340		// invalid value341		return FALSE;342	}343344	FASSERT(pFirstCity, "pFirstCity is null. Invalid!");345	FASSERT(pSecondCity, "pSecondCity is null. Invalid!");346	if(!pFirstCity || !pSecondCity)347	{348		// null city passed in349		return FALSE;350	}351352	FASSERT(pFirstCity != pSecondCity, "Cities are the same and are by default connected?");353	if(pFirstCity == pSecondCity)354	{355		// trying to go to the same city356		return FALSE;357	}358359	int iFirstCityIndex = -1;360	int iSecondCityIndex = -1;361	for(uint ui = 0; ui < pCityConnections->m_aiCityPlotIDs.size(); ui++)362	{363		if(pFirstCity->plot()->GetPlotIndex() == pCityConnections->m_aiCityPlotIDs[ui])364		{365			iFirstCityIndex = ui;366		}367368		if(pSecondCity->plot()->GetPlotIndex() == pCityConnections->m_aiCityPlotIDs[ui])369		{370			iSecondCityIndex = ui;371		}372373		if(iFirstCityIndex >= 0 && iSecondCityIndex >= 0)374		{375			break;376		}377	}378379	if(iFirstCityIndex < 0 || iSecondCityIndex < 0)380	{381		// did not find one or both of the cities382		return FALSE;383	}384385	CvCityConnections::RouteInfo* pRouteInfo = pCityConnections->GetRouteInfo(iFirstCityIndex, iSecondCityIndex);386	if(pRouteInfo)387	{388#if !defined(MOD_EVENTS_CITY_CONNECTIONS)389		if(bBestRoute)390		{391			return pRouteInfo->m_cRouteState & CvCityConnections::HAS_BEST_ROUTE;392		}393		else394#endif395		{396			return pRouteInfo->m_cRouteState & CvCityConnections::HAS_ANY_ROUTE;397		}398	}399400	return FALSE;401}

Calls

Called by