Gauges: convert generator-voltage bar to named-member bridge

The eng-page generator-voltage bar (evolt.pcc, ScalarBarGauge @004c721c) and
the MyomerCluster seek-voltage graph were fed by GeneratorVoltageConnection,
which walked the same dead path as the generator-letter lamp:
ResolveLink(AttributePointerOf(subsystem,"InputVoltage")) -> read resolved
+0x1DC == Generator::outputVoltage. The BT_DEV_GAUGES audio attribute rows
shifted the chained attribute ids so AttributePointerOf no longer lands on
voltageSource@0x1D0 -> the bar always read 0.

New BTGeneratorVoltage(subsystem) bridge (powersub.cpp) reads the NAMED member
via PoweredSubsystem::ResolveVoltageSource()->Generator::MeasuredVoltage()
(outputVoltage@0x1DC), bypassing the attribute table -- same pattern as
BTPowerSourceFrame/BTCoolingLoopFrame. Both GeneratorVoltageConnection callers
(the ScalarBarGauge param + the MyomerCluster seekValue) now pass subsystem_in.

[voltfeed]-verified: Myomers -> 10000V from GeneratorD (was 0 on the dead
path). Both pod + glass builds clean. Eng-page render awaiting live playtest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-21 00:21:41 -05:00
co-authored by Claude Opus 4.8
parent 8c7ff639de
commit f2eaf3d0ac
3 changed files with 63 additions and 12 deletions
+8 -3
View File
@@ -162,10 +162,15 @@ independent bugs stacked (all fixed, commit e634709):
now passes `subsystem_in` (not the `InputVoltage` attribute slot). **Lesson: gauge value feeds
must read named members through a complete-type bridge, NOT `AttributePointerOf`+`ResolveLink`
— the attribute table's chained ids are unstable under the audio rows.** The eng-page
`GeneratorVoltageConnection` (evolt voltage bar, btl4gau2.cpp:1737) still uses the same
`AttributePointerOf("InputVoltage")` path and is the remaining sibling to convert.
generator-voltage bar + MyomerCluster seek-voltage graph (`GeneratorVoltageConnection`,
evolt.pcc, btl4gau2.cpp:806/1750) were on the same dead path and are now converted the same
way -> `BTGeneratorVoltage(subsystem)` reads `Generator::MeasuredVoltage()`
(outputVoltage@0x1DC); `[voltfeed]`-verified (Myomers -> 10000V from GeneratorD). Still on the
OLD path but NOT yet converted (different attribute, direct read, not confirmed broken): the
GeneratorCluster + EnergyWeaponCluster bars that read `AttributePointerOf(subsystem,
"OutputVoltage")` directly (btl4gau2.cpp:968, ~1920).
Diagnostics retained (env `BT_LOOP_LOG`): `[loopfeed]` (BTCoolingLoopFrame) + `[busfeed]`
(BTPowerSourceFrame) print each lamp's resolved frame + source.
(BTPowerSourceFrame) + `[voltfeed]` (BTGeneratorVoltage) print each widget's resolved value + source.
**HUMAN-VERIFIED live 2026-07-21** (pod build, solo ARENA1 cockpit): the loop number + generator
letter boxes render correctly on the weapon panels.