CvTacticalAI::PlotBarbarianCampMoves()
- Defined in
- CvTacticalAI.cpp, line 2273
- Class
- CvTacticalAI
- Hook name
CivHooks::CvTacticalAI_PlotBarbarianCampMoves
Hooks
static bool BeforeCvTacticalAI_PlotBarbarianCampMoves(CvTacticalAI* self);static void AfterCvTacticalAI_PlotBarbarianCampMoves(CvTacticalAI* self);static void ReplaceCvTacticalAI_PlotBarbarianCampMoves(void (*original)(CvTacticalAI*), CvTacticalAI* self);CivRegisterBefore<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &BeforeCvTacticalAI_PlotBarbarianCampMoves);CivRegisterAfter<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &AfterCvTacticalAI_PlotBarbarianCampMoves);CivRegisterReplace<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &ReplaceCvTacticalAI_PlotBarbarianCampMoves);
Code
2272/// Assign a unit to capture an undefended barbarian camp2273void CvTacticalAI::PlotBarbarianCampMoves()2274{2275 bool bLog = GC.getLogging() && GC.getAILogging();2276 CvTacticalTarget* pTarget;2277 pTarget = GetFirstZoneTarget(AI_TACTICAL_TARGET_BARBARIAN_CAMP);2278 while(pTarget != NULL)2279 {2280 // See what units we have who can reach target this turn2281 CvPlot* pPlot = GC.getMap().plot(pTarget->GetTargetX(), pTarget->GetTargetY());2282 if(FindUnitsWithinStrikingDistance(pPlot, 1, 0, false /* bNoRangedUnits */, false /*bNavalOnly*/, false /*bMustMoveThrough*/, false /*bIncludeBlockedUnits*/, false /*bWillPillage*/, true /*bTargetUndefended*/))2283 {2284 // Queue best one up to capture it2285 ExecuteBarbarianCampMove(pPlot);2286 if(bLog)2287 {2288 CvString strLogString;2289 strLogString.Format("Removing barbarian camp, X: %d, Y: %d", pPlot->getX(), pPlot->getY());2290 LogTacticalMessage(strLogString);2291 }2292 DeleteTemporaryZone(pPlot);2293 }2294 pTarget = GetNextZoneTarget();2295 }2296}
Calls
- CvGlobals::getAILogging()
- CvGlobals::getLogging()
- CvGlobals::getMap()
- CvMap::plot(int, int) const
- CvPlot::getX() const
- CvPlot::getY() const
CvString::CvStringCvString::Format- CvTacticalAI::DeleteTemporaryZone(CvPlot *)
- CvTacticalAI::ExecuteBarbarianCampMove(CvPlot *)
- CvTacticalAI::FindUnitsWithinStrikingDistance(CvPlot *, int, int, bool, bool, bool, bool, bool, bool)
- CvTacticalAI::GetFirstZoneTarget(AITacticalTargetType)
- CvTacticalAI::GetNextZoneTarget()
- CvTacticalAI::LogTacticalMessage(CvString &, bool)
- CvTacticalTarget::GetTargetX()
- CvTacticalTarget::GetTargetY()