Bazaar developer reference

CvBuilderTaskingAI::AddRemoveUselessRoadDirectives(CvUnit *, CvPlot *, int)

Defined in
CvBuilderTaskingAI.cpp, line 1622
Class
CvBuilderTaskingAI
Hook name
CivHooks::CvBuilderTaskingAI_AddRemoveUselessRoadDirectives

Hooks

static bool BeforeCvBuilderTaskingAI_AddRemoveUselessRoadDirectives(CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, int iMoveTurnsAway);static void AfterCvBuilderTaskingAI_AddRemoveUselessRoadDirectives(CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, int iMoveTurnsAway);static void ReplaceCvBuilderTaskingAI_AddRemoveUselessRoadDirectives(void (*original)(CvBuilderTaskingAI*, CvUnit*, CvPlot*, int), CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, int iMoveTurnsAway);CivRegisterBefore<CivHooks::CvBuilderTaskingAI_AddRemoveUselessRoadDirectives>(host, &BeforeCvBuilderTaskingAI_AddRemoveUselessRoadDirectives);CivRegisterAfter<CivHooks::CvBuilderTaskingAI_AddRemoveUselessRoadDirectives>(host, &AfterCvBuilderTaskingAI_AddRemoveUselessRoadDirectives);CivRegisterReplace<CivHooks::CvBuilderTaskingAI_AddRemoveUselessRoadDirectives>(host, &ReplaceCvBuilderTaskingAI_AddRemoveUselessRoadDirectives);

Code

1622void CvBuilderTaskingAI::AddRemoveUselessRoadDirectives(CvUnit* pUnit, CvPlot* pPlot, int iMoveTurnsAway)1623{1624	// if it's not within a city radius1625	if(!pPlot->isWithinTeamCityRadius(pUnit->getTeam()))1626	{1627		return;1628	}16291630	// don't try to remove the route under the city1631	if(pPlot->isCity())1632	{1633		return;1634	}16351636	// nothing here to remove1637	if(pPlot->getRouteType() == NO_ROUTE)1638	{1639		return;1640	}16411642	// flagged this turn means this is a valid route plot1643	if(pPlot->GetBuilderAIScratchPadTurn() == GC.getGame().getGameTurn() && pPlot->GetBuilderAIScratchPadPlayer() == pUnit->getOwner())1644	{1645		return;1646	}16471648	BuildTypes eRemoveRouteBuild = NO_BUILD;1649	for(int iBuildIndex = 0; iBuildIndex < GC.getNumBuildInfos(); iBuildIndex++)1650	{1651		BuildTypes eBuild = (BuildTypes)iBuildIndex;1652		CvBuildInfo* pkBuild = GC.getBuildInfo(eBuild);1653		if(NULL != pkBuild && pkBuild->IsRemoveRoute() && pUnit->canBuild(pPlot, eBuild))1654		{1655			eRemoveRouteBuild = eBuild;1656			break;1657		}1658	}165916601661	if(eRemoveRouteBuild == NO_BUILD)1662	{1663		return;1664	}16651666	// evaluate if removing the road helps anything1667	ImprovementTypes eImprovement = pPlot->getImprovementType();1668	BuildTypes eBuild = NO_BUILD;1669	if(eImprovement != NO_IMPROVEMENT)1670	{1671		eBuild = GetBuildTypeFromImprovement(eImprovement);1672	}16731674	//int iWeight = GetWeightFromPlotYields(m_pPlayer, pPlot, eBuild, NULL, NO_YIELD, 100, NO_ROUTE) - GetWeightFromPlotYields(m_pPlayer, pPlot, eBuild, NULL, NO_YIELD, 10);1675	int iWeight = 0;1676	iWeight = CorrectWeight(iWeight);16771678	if(iWeight > 0)1679	{1680		BuilderDirective directive;1681		directive.m_eDirective = BuilderDirective::REMOVE_ROAD;1682		directive.m_eBuild = eRemoveRouteBuild;1683		directive.m_eResource = NO_RESOURCE;1684		directive.m_sX = pPlot->getX();1685		directive.m_sY = pPlot->getY();1686		directive.m_sMoveTurnsAway = iMoveTurnsAway;16871688		m_aDirectives.push_back(directive, iWeight);1689	}16901691}

Calls