Bazaar developer reference

CvTeam::DoUpdateBestRoute()

Defined in
CvTeam.cpp, line 4498
Class
CvTeam
Hook name
CivHooks::CvTeam_DoUpdateBestRoute

Hooks

static bool BeforeCvTeam_DoUpdateBestRoute(CvTeam* self);static void AfterCvTeam_DoUpdateBestRoute(CvTeam* self);static void ReplaceCvTeam_DoUpdateBestRoute(void (*original)(CvTeam*), CvTeam* self);CivRegisterBefore<CivHooks::CvTeam_DoUpdateBestRoute>(host, &BeforeCvTeam_DoUpdateBestRoute);CivRegisterAfter<CivHooks::CvTeam_DoUpdateBestRoute>(host, &AfterCvTeam_DoUpdateBestRoute);CivRegisterReplace<CivHooks::CvTeam_DoUpdateBestRoute>(host, &ReplaceCvTeam_DoUpdateBestRoute);

Code

4497/// Figures out what the best available route is4498void CvTeam::DoUpdateBestRoute()4499{4500	RouteTypes eBestRoute = NO_ROUTE;4501	int iBestRouteValue = 0;45024503	// Loop through all builds to see if it allows us to build a Route4504	for(int iBuildLoop = 0; iBuildLoop < GC.getNumBuildInfos(); iBuildLoop++)4505	{4506		const BuildTypes eBuild = static_cast<BuildTypes>(iBuildLoop);4507		CvBuildInfo* pkBuildInfo = GC.getBuildInfo(eBuild);4508		if(pkBuildInfo)4509		{4510			const RouteTypes eRoute = (RouteTypes) pkBuildInfo->getRoute();4511			if(eRoute != NO_ROUTE)4512			{4513				int iRouteValue = -1;45144515				// If this route requires a tech, it's value is the cost of the tech4516				const TechTypes eTech = (TechTypes) pkBuildInfo->getTechPrereq();4517				CvTechEntry* pkTechInfo = (eTech != NO_TECH)? GC.getTechInfo(eTech) : NULL;4518				if(pkTechInfo)4519				{4520					if(GetTeamTechs()->HasTech(eTech))4521					{4522						iRouteValue = pkTechInfo->GetResearchCost();4523					}4524				}4525				// Route requires no tech, so it's value is simply 14526				else4527				{4528					iRouteValue = 1;4529				}45304531				// Most valuable route found so far? (note we use greater than OR equal to so that we'll pick up the LAST entry in Builds - this is most likely to be the most advanced if there are ties)4532				if(iRouteValue >= iBestRouteValue)4533				{4534					iBestRouteValue = iRouteValue;4535					eBestRoute = eRoute;4536				}4537			}4538		}4539	}45404541	if(iBestRouteValue > -1)4542	{4543		SetBestPossibleRoute(eBestRoute);4544	}4545}

Calls

Called by