CvTacticalAI::FindBarbarianGankTradeRouteTarget(UnitHandle)
- Defined in
- CvTacticalAI.cpp, line 10289
- Class
- CvTacticalAI
- Hook name
CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget
Hooks
static bool BeforeCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvTacticalAI* self, UnitHandle pUnit, CvPlot*& result);static void AfterCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvTacticalAI* self, UnitHandle pUnit, CvPlot*& result);static CvPlot* ReplaceCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvPlot* (*original)(CvTacticalAI*, UnitHandle), CvTacticalAI* self, UnitHandle pUnit);CivRegisterBefore<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &BeforeCvTacticalAI_FindBarbarianGankTradeRouteTarget);CivRegisterAfter<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &AfterCvTacticalAI_FindBarbarianGankTradeRouteTarget);CivRegisterReplace<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &ReplaceCvTacticalAI_FindBarbarianGankTradeRouteTarget);
Code
10288/// Scan nearby tiles for a trade route to sit and gank from10289CvPlot* CvTacticalAI::FindBarbarianGankTradeRouteTarget(UnitHandle pUnit)10290{10291 CvPlot* pBestMovePlot = NULL;10292 int iBestValue;10293 int iValue;1029410295 // Now looking for BEST score10296 iBestValue = 0;10297 int iMovementRange = pUnit->movesLeft() / GC.getMOVE_DENOMINATOR();10298 for(int iX = -iMovementRange; iX <= iMovementRange; iX++)10299 {10300 for(int iY = -iMovementRange; iY <= iMovementRange; iY++)10301 {10302 CvPlot* pPlot = plotXYWithRangeCheck(pUnit->getX(), pUnit->getY(), iX, iY, iMovementRange);10303 if(!pPlot)10304 {10305 continue;10306 }1030710308 if(pUnit->atPlot(*pPlot))10309 {10310 continue;10311 }1031210313 if(!pPlot->isRevealed(pUnit->getTeam()))10314 {10315 continue;10316 }1031710318 if(pPlot->area() != pUnit->area())10319 {10320 continue;10321 }1032210323 if(!CanReachInXTurns(pUnit, pPlot, 1))10324 {10325 continue;10326 }1032710328 iValue = GC.getGame().GetGameTrade()->GetNumTradeRoutesInPlot(pPlot);1032910330 if(iValue > iBestValue)10331 {10332 pBestMovePlot = pPlot;10333 iBestValue = iValue;10334 }10335 }10336 }10337 return pBestMovePlot;10338}
Calls
- CanReachInXTurns(UnitHandle, CvPlot *, int, bool, int *)
- CvGame::GetGameTrade()
- CvGameTrade::GetNumTradeRoutesInPlot(CvPlot *)
- CvGlobals::getGame()
- CvGlobals::getMOVE_DENOMINATOR()
- CvPlot::area() const
- CvPlot::isRevealed(TeamTypes) const
- CvUnit::area() const
- CvUnit::atPlot(const CvPlot &) const
- CvUnit::getTeam() const
- CvUnit::getX() const
- CvUnit::getY() const
- CvUnit::movesLeft() const
FObjectHandle::FObjectHandleFObjectHandle::operator->- plotXYWithRangeCheck(int, int, int, int, int)