HUD: per-weapon pip data dump + the real authored ranges recorded
[hud] pip diagnostic logs each registered pip's classID/PipPosition/ WeaponRange/PipExtendedRange/PipColor. The live dump corrects the "everything is 500m" assumption: BLH lasers red @500 (x3, ext=1), missiles amber @800 (x2), PPCs blue @900 (x2) -- the pips sit at their weapons' max-range marks on the range ladder (caret below a pip = that weapon reaches), so 7 weapons read as 3 weapon-system groups. KB + comments corrected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
5038d64382
commit
4e7561714e
@@ -99,7 +99,13 @@ range caret binds to the live target range (`BTSetHudTargetRange`, fed by mech4'
|
||||
`tools/disas2.py` — the full annotated read: the task-37 commit + btl4vid.cpp comments) [T1],
|
||||
and every instrument is now live [T2]:**
|
||||
- **Right ladder** = range 0–1200 m: a BAR from ladder-top to the caret + the yellow caret
|
||||
translate (`-scaleY·frac`); pegs at 1200 with no target.
|
||||
translate (`-scaleY·frac`); pegs at 1200 with no target; the DISPLAYED range slides at
|
||||
**500 m/s** toward the true pick range (HudSimulation :5652 [T1]). **The weapon pips sit on
|
||||
this same ladder at each weapon's authored max-range mark** — caret below a pip = that weapon
|
||||
reaches the target. BLH authored data (live dump): 3× ER-M laser red @**500 m** (two stacked
|
||||
at one column; PipExtendedRange=1), 2× missile amber (0.6,0.4,0) @**800 m**, 2× PPC blue
|
||||
@**900 m** — so the 7 pips read as 3 weapon-SYSTEM groups. (The engineering-panel "RANGE 500M"
|
||||
labels are panel text; the authoritative reach is the streamed WeaponRange.)
|
||||
- **Bottom 21-tick tape = the TORSO-TWIST indicator** (NOT a heading tape): deflection line +
|
||||
carets at `∓(span/2)·(RotationOfTorsoHorizontal / HorizontalTorsoLimit)` (HUD attrs 4/5/6).
|
||||
Fixed-torso BLH: centred (authentic static).
|
||||
|
||||
@@ -1545,6 +1545,11 @@ BTReticleRenderable *BTBuildReticle(Entity *mech)
|
||||
RGBColor pc = wp->PipColor();
|
||||
float r = (float)pc.Red, g = (float)pc.Green, b = (float)pc.Blue;
|
||||
if (r < 0.0f || g < 0.0f || b < 0.0f) { r = 0.78f; g = 0.08f; b = 0.02f; }
|
||||
DEBUG_STREAM << "[hud] pip: classID=" << (int)ws->GetClassID()
|
||||
<< " pos=" << wp->PipPosition()
|
||||
<< " range=" << wp->WeaponRange()
|
||||
<< " ext=" << wp->PipExtendedRange()
|
||||
<< " rgb=(" << r << "," << g << "," << b << ")\n" << std::flush;
|
||||
gBTReticle->AddWeapon(
|
||||
wp->WeaponRange(),
|
||||
wp->PipPosition(),
|
||||
|
||||
@@ -538,7 +538,8 @@ extern BTDriveInput gBTDrive;
|
||||
static const Scalar kDriveMaxSpeed = 30.0f; // full-throttle forward speed
|
||||
static const Scalar kDriveTurnRate = 1.2f; // full-deflection yaw rate
|
||||
// (kWeaponRange removed: the damage gate now reads the AUTHENTIC per-weapon
|
||||
// targetWithinRange -- effectiveRange @0x328 = (1-damage) x authored 500 m.)
|
||||
// targetWithinRange -- effectiveRange @0x328 = (1-damage) x the authored
|
||||
// WeaponRange: BLH lasers 500 / missiles 800 / PPCs 900 m.)
|
||||
|
||||
// Single local-player drive state (bring-up).
|
||||
static Scalar gDriveHeading = 0.0f; // yaw about world up (Y)
|
||||
@@ -2528,7 +2529,8 @@ void
|
||||
|
||||
// THE AUTHENTIC RANGE GATE (FireWeapon @004bace8 :7758 [T1]): damage
|
||||
// applies when dist <= the weapon's EFFECTIVE range = (1 - host-zone
|
||||
// damage) x its AUTHORED WeaponRange (BLH lasers/PPCs: 500 m) -- the
|
||||
// damage) x its AUTHORED WeaponRange (BLH: lasers 500, missiles 800,
|
||||
// PPCs 900 m -- the [hud] pip dump) -- the
|
||||
// per-weapon targetWithinRange flag UpdateTargeting computes each
|
||||
// frame. Any live weapon within reach lands the aggregate shot.
|
||||
// (Replaces the old kWeaponRange=100 bring-up constant, which
|
||||
|
||||
Reference in New Issue
Block a user