HUD (task #68 follow-up): authentic reticle pip GROUPS -- front vs rear
The binary reticle registration resolves each weapon's RearFiring attribute and registers its pip in group 1 (front) or 2 (rear) (part_014.c:5429-5434) [T1]; the reticle draws the group selected by the mech's reticleElementMask low bits (= binary mech+0x390, driven by the weapon-update view switch part_013.c:5588-5595: forward |1&~2, look-back |2&~1). Port: BTBuildReticle passes the real group (was hardcoded 1 on the disproven "no BLH weapon is rear" belief); BTCommitLookState drives the mech's reticleElementMask low bits per view (mech4's HUD tick already publishes them as gBTHudGroupMask, and the reticle Draw already filters on it). Resolves the user-reported "only 2 ERM dots but the mech has 3": ERMLaser_1 (front) and ERMLaser_2 (rear) both author pip position 1 -- with every pip drawn in one group the two red dots sat exactly on top of each other. Now: forward view = 5 pips (2 PPC + ERM_1 + 2 SRM), look-back = the 2 rear lasers' own group layout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
38febae36b
commit
ebdfa40d95
@@ -1902,7 +1902,12 @@ BTReticleRenderable *BTBuildReticle(Entity *mech)
|
||||
2, 3,
|
||||
(int *)wp->SimulationStatePtr(), // attr 1: damage state (1 = destroyed)
|
||||
1,
|
||||
1 /* Front group (RearFiring==0 on every BLH weapon) */);
|
||||
// (task #68) the AUTHENTIC pip group: the binary registration reads
|
||||
// the weapon's RearFiring attr and passes group 1 (front) / 2 (rear)
|
||||
// (part_014.c:5429-5434) -- the reticle draws the group matching
|
||||
// the current look view (mech reticleElementMask low bits). The
|
||||
// old hardcoded 1 rode the disproven "no BLH weapon is rear" belief.
|
||||
wp->GetRearFiring() ? 2 : 1);
|
||||
}
|
||||
DEBUG_STREAM << "[hud] reticle built: " << gBTReticle->WeaponCount()
|
||||
<< " weapon pip(s) registered\n" << std::flush;
|
||||
|
||||
@@ -6225,6 +6225,17 @@ void BTCommitLookState(void *mech_v, int look_state)
|
||||
(look_state == 3) ? rf : 0);
|
||||
}
|
||||
}
|
||||
|
||||
// (task #68) the HUD pip GROUP mask (binary mech+0x390, weapon update
|
||||
// part_013.c:5588-5595): forward view shows the FRONT pip group (|=1,&~2),
|
||||
// look-back shows the REAR group (|=2,&~1); side/down views leave it.
|
||||
// mech4's HUD tick publishes the low bits as gBTHudGroupMask each frame.
|
||||
if (look_state == 0)
|
||||
m->targetReticle.reticleElementMask = (Reticle::ReticleElements)
|
||||
(((int)m->targetReticle.reticleElementMask | 1) & ~2);
|
||||
else if (look_state == 3)
|
||||
m->targetReticle.reticleElementMask = (Reticle::ReticleElements)
|
||||
(((int)m->targetReticle.reticleElementMask | 2) & ~1);
|
||||
if (getenv("BT_KEY_LOG"))
|
||||
DEBUG_STREAM << "[look] state=" << look_state
|
||||
<< " rearFiring=" << m->rearFiring
|
||||
|
||||
Reference in New Issue
Block a user