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],
|
`tools/disas2.py` — the full annotated read: the task-37 commit + btl4vid.cpp comments) [T1],
|
||||||
and every instrument is now live [T2]:**
|
and every instrument is now live [T2]:**
|
||||||
- **Right ladder** = range 0–1200 m: a BAR from ladder-top to the caret + the yellow caret
|
- **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 +
|
- **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).
|
carets at `∓(span/2)·(RotationOfTorsoHorizontal / HorizontalTorsoLimit)` (HUD attrs 4/5/6).
|
||||||
Fixed-torso BLH: centred (authentic static).
|
Fixed-torso BLH: centred (authentic static).
|
||||||
|
|||||||
@@ -1545,6 +1545,11 @@ BTReticleRenderable *BTBuildReticle(Entity *mech)
|
|||||||
RGBColor pc = wp->PipColor();
|
RGBColor pc = wp->PipColor();
|
||||||
float r = (float)pc.Red, g = (float)pc.Green, b = (float)pc.Blue;
|
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; }
|
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(
|
gBTReticle->AddWeapon(
|
||||||
wp->WeaponRange(),
|
wp->WeaponRange(),
|
||||||
wp->PipPosition(),
|
wp->PipPosition(),
|
||||||
|
|||||||
@@ -538,7 +538,8 @@ extern BTDriveInput gBTDrive;
|
|||||||
static const Scalar kDriveMaxSpeed = 30.0f; // full-throttle forward speed
|
static const Scalar kDriveMaxSpeed = 30.0f; // full-throttle forward speed
|
||||||
static const Scalar kDriveTurnRate = 1.2f; // full-deflection yaw rate
|
static const Scalar kDriveTurnRate = 1.2f; // full-deflection yaw rate
|
||||||
// (kWeaponRange removed: the damage gate now reads the AUTHENTIC per-weapon
|
// (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).
|
// Single local-player drive state (bring-up).
|
||||||
static Scalar gDriveHeading = 0.0f; // yaw about world up (Y)
|
static Scalar gDriveHeading = 0.0f; // yaw about world up (Y)
|
||||||
@@ -2528,7 +2529,8 @@ void
|
|||||||
|
|
||||||
// THE AUTHENTIC RANGE GATE (FireWeapon @004bace8 :7758 [T1]): damage
|
// THE AUTHENTIC RANGE GATE (FireWeapon @004bace8 :7758 [T1]): damage
|
||||||
// applies when dist <= the weapon's EFFECTIVE range = (1 - host-zone
|
// 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
|
// per-weapon targetWithinRange flag UpdateTargeting computes each
|
||||||
// frame. Any live weapon within reach lands the aggregate shot.
|
// frame. Any live weapon within reach lands the aggregate shot.
|
||||||
// (Replaces the old kWeaponRange=100 bring-up constant, which
|
// (Replaces the old kWeaponRange=100 bring-up constant, which
|
||||||
|
|||||||
Reference in New Issue
Block a user