docs(gauge): GeneratorCluster done -- Phase 2 complete (4/4 widgets)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-07 17:57:42 -05:00
co-authored by Claude Opus 4.8
parent 88cd68aaa1
commit f998f2a023
+10 -7
View File
@@ -532,13 +532,16 @@ a prose-only vtable slot AVs on first call).
the Comm surface now renders the live local-pilot row (KILLS 0 DEATHS 0 + name box). Feed = new
`BTResolveRosterPilot` bridge (mechmppr.cpp) → mapper roster. DEATHS redirected from the dead pad_0x280 to
the real deathCount@0x200. The scoring feed that moves KILLS/DEATHS is P3.
- **GeneratorCluster** (4 generator panels, buttons 9-12) — RECONSTRUCTED + infra committed (Generator
OutputVoltage table + the @004c72ac ScalarBarGauge Scalar* variant + Make/ctor/dtor + 15-param
methodDescription) but **registration GATED**: registering aborts at runtime — the 4 panels build (4
"BecameActive not defined" warnings) then `abort()`, isolated to the PARENT lifecycle (persists with all 5
children nulled; no pure virtuals; unguarded ctor path). The sibling SubsystemCluster overrides
BecameActive/Execute/TestInstance whereas the decode had GeneratorCluster override ONLY the dtor — that
claim is the prime suspect. Re-enable the btl4grnd.cpp line once the parent lifecycle is fixed.
- **GeneratorCluster** (4 generator panels, buttons 9-12) — the 4 panels (A/B/C/D) render with blue
OutputVoltage bars (the @004c72ac ScalarBarGauge Scalar* variant + the Generator OutputVoltage table),
labels, and status lamps. **Root cause of the initial abort (cdb-attach to the frozen dialog):** the engine
base `Gauge::Execute` is `Fail("not overridden")`→abort (GAUGE.cpp:598), so an ACTIVE container that
doesn't override Execute aborts by design (GuardedExecute's SEH can't catch an `abort()`). The decode's
"overrides ONLY the dtor / renders via children" was wrong — the 1995 base Gauge::Execute was a no-op, the
2007 engine's aborts. FIX: `BecameActive()` (blit the background pixmap + don't self-inactivate) + `Execute()`
(no-op; the 5 self-registered children draw the dynamic content), mirroring the sibling SubsystemCluster.
**⚠ LESSON: a reconstructed container gauge MUST override Execute (+ a non-inactivating BecameActive) — the
2007 `Gauge::Execute` base aborts.**
- **TODO (lower priority):** **PrepEngrScreen** (@004c7b30/7bf0/7e48 — engineering full-screen), **SectorDisplay**
(@004c9e10/ca07c) + **MessageBoard** (@004cb678), **SeekVoltageGraph::Execute** (@004c6934) + real FindAttributeIndex.