diff --git a/docs/GAUGE_COMPOSITE.md b/docs/GAUGE_COMPOSITE.md index cb70899..a575607 100644 --- a/docs/GAUGE_COMPOSITE.md +++ b/docs/GAUGE_COMPOSITE.md @@ -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.