j134 fix: tracker must take the mover's switch per-call (instance flag was silently off on the object-literal construction path) + apply the correction on the reading that carries the server's turn-N+1 energy change (two-slot buffer); live-verified alignment
This commit is contained in:
@@ -129,7 +129,7 @@ proc resetRound*(m: var WaveSurferModule) =
|
||||
for i in 0..<WS_BINS: m.bins[i] = 1.0
|
||||
|
||||
proc initWaveSurfer*(): WaveSurferModule =
|
||||
var m = WaveSurferModule(debugGraphics: false, fire: initFireTracker(SurfFireFix))
|
||||
var m = WaveSurferModule(debugGraphics: false, fire: initFireTracker())
|
||||
m.resetRound()
|
||||
m
|
||||
|
||||
@@ -149,11 +149,13 @@ proc prevEnergySet(m: var WaveSurferModule, id: int, energy: float) =
|
||||
|
||||
proc noteEnemyBulletHit*(m: var WaveSurferModule, power: float) =
|
||||
## `onHitByBullet` -> the shooter's `3*power` bonus (no-op when off).
|
||||
m.fire.noteEnemyBulletHit(power)
|
||||
if SurfFireFix:
|
||||
m.fire.noteEnemyBulletHit(power)
|
||||
|
||||
proc noteDamageDealt*(m: var WaveSurferModule, damage: float) =
|
||||
## `onBulletHit` -> our same-tick damage to the enemy (no-op when off).
|
||||
m.fire.noteDamageDealt(damage)
|
||||
if SurfFireFix:
|
||||
m.fire.noteDamageDealt(damage)
|
||||
|
||||
proc gfToBin(gf: float64): int {.inline.} =
|
||||
clamp(int(round((gf.clamp(-1.0, 1.0) + 1.0) * 0.5 * float64(WS_BINS - 1))),
|
||||
@@ -191,7 +193,7 @@ proc detectFire(m: var WaveSurferModule, id: int, ex, ey, eenergy,
|
||||
## (corrected) one-tick drop. `drop` IS the firepower. Window 0.1..3.0,
|
||||
## SURF's shipped window; the shared tracker corrects the delta and splits an
|
||||
## over-cap drop across several waves.
|
||||
for power in m.fire.detect(id, eenergy, 0.1, 3.0):
|
||||
for power in m.fire.detect(id, eenergy, 0.1, 3.0, SurfFireFix):
|
||||
let bspeed = 20.0 - 3.0 * power
|
||||
let bearing = arctan2(botY - ey, botX - ex)
|
||||
let d = hypot(botX - ex, botY - ey)
|
||||
|
||||
Reference in New Issue
Block a user