feat(ModularBot): melee targeting — multi-enemy tracker, per-enemy gun fitness, radar auto-switch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-20 12:25:10 +02:00
parent 30d00ba163
commit ab473c6b68
9 changed files with 375 additions and 174 deletions
+19
View File
@@ -0,0 +1,19 @@
## Target selector: picks which enemy to aim at.
import enemy_tracker
type TargetMode* = enum
tmClosest, ## nearest enemy
tmWeakest, ## lowest energy (finisher)
tmBestGun ## future — alias to closest for now
proc selectTarget*(et: EnemyTracker, selfX, selfY: float,
mode: TargetMode = tmClosest): int =
## Returns enemy bot ID. Falls back to 1v1 naturally when 1 alive.
let alive = et.allAlive()
if alive.len == 0: return -1
if alive.len == 1: return alive[0].id
let chosen = case mode
of tmWeakest: et.weakest()
else: et.closestTo(selfX, selfY) # tmClosest + tmBestGun
result = chosen.id