ab473c6b68
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 lines
655 B
Nim
20 lines
655 B
Nim
## 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
|