Bazaar developer reference

CvPlayer::getAdvancedStartRouteCost(RouteTypes, bool, CvPlot *)

Defined in
CvPlayer.cpp, line 23198
Class
CvPlayer
Hook name
CivHooks::CvPlayer_getAdvancedStartRouteCost

Hooks

static bool BeforeCvPlayer_getAdvancedStartRouteCost(CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot, int& result);static void AfterCvPlayer_getAdvancedStartRouteCost(CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot, int& result);static int ReplaceCvPlayer_getAdvancedStartRouteCost(int (*original)(CvPlayer*, RouteTypes, bool, CvPlot*), CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot);CivRegisterBefore<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &BeforeCvPlayer_getAdvancedStartRouteCost);CivRegisterAfter<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &AfterCvPlayer_getAdvancedStartRouteCost);CivRegisterReplace<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &ReplaceCvPlayer_getAdvancedStartRouteCost);

Code

23198int CvPlayer::getAdvancedStartRouteCost(RouteTypes eRoute, bool bAdd, CvPlot* pPlot)23199{23200	if(0 == getNumCities())23201	{23202		return -1;23203	}2320423205	if(eRoute == NO_ROUTE)23206	{23207		return -1;23208	}2320923210	CvRouteInfo* pkRouteInfo = GC.getRouteInfo(eRoute);23211	if(pkRouteInfo == NULL)23212	{23213		return -1;23214	}2321523216	int iCost = pkRouteInfo->getAdvancedStartCost();2321723218	// This denotes cities may not be purchased through Advanced Start23219	if(iCost < 0)23220	{23221		return -1;23222	}2322323224	iCost *= GC.getGame().getGameSpeedInfo().getBuildPercent();23225	iCost /= 100;2322623227	// No invalid plots!23228	if(pPlot != NULL)23229	{23230		if(pPlot->isCity())23231		{23232			return -1;23233		}2323423235		if(bAdd)23236		{23237			if(pPlot->isImpassable() || pPlot->isWater() || pPlot->isMountain())23238			{23239				return -1;23240			}23241			// Can't place twice23242			if(pPlot->getRouteType() == eRoute)23243			{23244				return -1;23245			}23246		}23247		else23248		{23249			// Need Route to remove it23250			if(pPlot->getRouteType() != eRoute)23251			{23252				return -1;23253			}23254		}2325523256		// Must be owned by me23257		if(pPlot->getOwner() != GetID())23258		{23259			return -1;23260		}23261	}2326223263	// Tech requirement23264	for(int iBuildLoop = 0; iBuildLoop < GC.getNumBuildInfos(); iBuildLoop++)23265	{23266		const BuildTypes eBuild = static_cast<BuildTypes>(iBuildLoop);23267		CvBuildInfo* pkBuildInfo = GC.getBuildInfo(eBuild);23268		if(pkBuildInfo)23269		{23270			if(pkBuildInfo->getRoute() == eRoute)23271			{23272				if(!(GET_TEAM(getTeam()).GetTeamTechs()->HasTech((TechTypes)pkBuildInfo->getTechPrereq())))23273				{23274					return -1;23275				}23276			}23277		}23278	}2327923280	return iCost;23281}

Calls

Called by