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:
@@ -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
|
||||
Reference in New Issue
Block a user