gauge wave P2c: GeneratorCluster reconstructed + infra (gated -- parent aborts)
Reconstructed the 4th unbuilt widget (the 4 generator engineering panels, buttons 9-12) + its companions, but left it UNREGISTERED pending a runtime-abort fix: - Generator OutputVoltage attribute table (powersub) -> outputVoltage@0x1DC, chained to HeatSink's dense index (temps already reach it). Correct + reusable. - ScalarBarGauge @004c72ac plain-Scalar variant (btl4gau2) -- the DIRECT-Scalar* bar the GeneratorCluster voltage bar needs (the existing @004c721c takes a resolved source object). Correct + harmless. - GeneratorCluster Make/ctor/dtor + 15-param methodDescription reconstructed from part_014.c:891-1013 (replacing the prose + placeholder Make + the bogus DAT pool); builds the 5 children (temp bar / voltage bar / leak wipe / 2 lamps). Header fixed to the binary ctor param order (secondaryColor@0x94, +_reserved0xB0 -> sizeof 0xB4). ChildRate forward-declared. ⚠ REGISTRATION GATED (commented out in BTL4MethodDescription[]): registering it aborts at runtime -- the 4 panels build (the 4 "BecameActive not defined" warnings fire) then abort(). ISOLATED to the PARENT lifecycle: the abort PERSISTS with all 5 children nulled; there are no pure virtuals; Execute is SEH-guarded under BT_DEV_GAUGES so the fault is in the unguarded ctor/lifecycle path. The sibling SubsystemCluster overrides BecameActive/Execute/TestInstance whereas the decode has GeneratorCluster overriding ONLY the dtor -- that "inherits only the dtor" claim is the prime suspect. Deferred; the 3 other P2 widgets (LeakGauge/VertNormalSlider/PilotList) ship clean. Verified: unregistered -> parse-skips -> no abort; combat un-regressed (DESTROYED), 0 crashes. 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
0060a3e1ca
commit
b44e908101
@@ -146,6 +146,18 @@ MethodDescription
|
||||
&BitMapInverseWipe::methodDescription, // "LeakGauge" -- coolant-leak inverse-wipe (Condenser/CoolantMassLeakRate)
|
||||
&VertNormalSlider::methodDescription, // "vertNormalSlider" -- condenser valve-setting slider (heat MFD)
|
||||
&PilotList::methodDescription, // "pilotList" -- Comm KILLS/DEATHS pilot roster
|
||||
// GeneratorCluster is reconstructed (btl4gau2.cpp) + its infra is in place
|
||||
// (Generator OutputVoltage table + the @004c72ac ScalarBarGauge variant), but
|
||||
// registering it aborts at runtime: the 4 panels build (the 4 "BecameActive not
|
||||
// defined" warnings fire) then abort() -- isolated to the PARENT lifecycle (the
|
||||
// abort persists with all 5 children nulled; no pure virtuals; the ctor path is
|
||||
// unguarded by the SEH GuardedExecute). The sibling SubsystemCluster overrides
|
||||
// BecameActive/Execute/TestInstance whereas the decode has GeneratorCluster
|
||||
// overriding ONLY the dtor -- that "inherits only dtor" claim is the prime
|
||||
// suspect. DEFERRED: unregistered so it parse-skips (never built) -> no abort;
|
||||
// the other 3 P2 widgets ship clean. Re-enable this line once the parent
|
||||
// lifecycle is resolved.
|
||||
// &GeneratorCluster::methodDescription, // "GeneratorCluster" -- 4 generator panels (buttons 9-12)
|
||||
&BTL4ChainToPrevious
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user