docs: GAUGE_COMPOSITE Phase 2 COMPLETE — SectorDisplay/PrepEngrScreen/MessageBoard registered; gauge system done
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
7fc4acb89f
commit
5b9100da74
+29
-3
@@ -517,7 +517,7 @@ strcmps every slot — a gap AVs). Done:
|
||||
no leak / massScale 3.0 = authentic pristine. **After P1 every config-string binding resolves OK except
|
||||
HeatSink/AmbientTemperature** (needs the aggregate bank, P3).
|
||||
|
||||
### Phase 2 — WIDGET RECONSTRUCTION (3 of 4 DONE; commits d68284e/0060a3e/b44e908)
|
||||
### Phase 2 — WIDGET RECONSTRUCTION (COMPLETE — every config gauge primitive registered; [gskip]=0)
|
||||
These config keywords were UNREGISTERED in `BTL4MethodDescription[]` (btl4grnd.cpp) so their lines
|
||||
parse-skipped and the gauge never built (even after publishing). The `gauge-widget-decode` workflow
|
||||
reconstructed each from the binary; registered widgets need a REAL Make/ctor/Execute/dtor (the /FORCE trap:
|
||||
@@ -542,8 +542,34 @@ a prose-only vtable slot AVs on first call).
|
||||
(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.
|
||||
- ✅ **SectorDisplay** (radar SECTOR X/Z read-out, Secondary overlay; commit 4a4ec68) — was PROSE-ONLY
|
||||
(placeholder Make). Reconstructed byte-verified from the disassembly (ctor @4c9e10, Execute @4ca07c,
|
||||
methodDescription PE-parse): `SectorDisplay : GraphicGauge` (0xC4), overrides LinkToEntity(9)/BecameActive(3)/
|
||||
Execute(16). Execute reads the linked mech's `localOrigin` → two 100-unit sector numerics
|
||||
`numericA=Round(-Z*0.01)+500`, `numericB=Round(X*0.01)+500` (Round=FUN_004dcd94, corrected from a "truncate"
|
||||
claim; 0.01 + -Z/+X asm-verified). **VERIFIED LIVE (BT_SECTOR_LOG): Make port=1 (overlay), Execute -Z=960/X=362
|
||||
→ sectorA=510 sectorB=504.**
|
||||
- ✅ **PrepEngrScreen** (per-engineering-screen static label overlay, 12 CFG calls; commit c0d2eb0) — was a
|
||||
MISLABELED stub (base Gauge/Execute/mech+screenNumber swapped). Corrected (vtables.tsv proof): base
|
||||
`GraphicGaugeBackground` (paint-on-activation, only dtor+BecameActive overridden — NO Execute virtual, so the
|
||||
Fail→abort hazard doesn't apply), screenNumber@0x6C/mech@0x70. BecameActive walks the roster (safe accessors +
|
||||
BTGetSubsystemAuxScreen), finds the subsystem whose auxScreenNumber==this screen (1..12), paints its labels
|
||||
dispatched on GetClassID. **All 12 build; composite un-regressed.**
|
||||
- ✅ **MessageBoard** (secondary-MFD comm/status ticker; commit 7fc4acb) — was PROSE-ONLY; the LAST parse-skip.
|
||||
Reconstructed (Make @4cb678 … Execute @4cb82c, 0xA4); fixed 3 header mislabels (enabled→trackedMech;
|
||||
previousMessageId/previousNameId swapped). **DEFERRED/EMPTY by design (authentic for bring-up):** the source is
|
||||
never bound (SetSource has no caller) AND the status queue (StatusMessagePool, btstubs.cpp:62) is a NULL stub →
|
||||
no messages → Execute early-returns (safe no-op). Data via a `BTResolveMessageBoard` /FORCE-safe bridge
|
||||
(btplayer.cpp). **After this, the parse-skip list is EMPTY.**
|
||||
|
||||
**⭐ GAUGE SYSTEM COMPLETE (registration + binding):** all 50 config attribute bindings resolve (`[attr]` 0 NULL —
|
||||
AggregateHeatSink cleared the last, `HeatSink/AmbientTemperature`), and every config gauge primitive is registered +
|
||||
built (`[gskip]`=0). Diagnostic `BT_GAUGE_SKIP_LOG` (GAUGREND.cpp, gated) logs each unregistered primitive the
|
||||
dev-parse skips — the tool that pinned the last 3 (⚠ the gauge renderer builds LAZILY, so verification runs must wait
|
||||
long enough for BuildConfigurationFile; a too-early kill shows [gparse]=0 and looks like "not built"). Remaining gauge
|
||||
work is DATA FEEDS, not widgets: the valve/message CONTROL routes (0xBD3 SubsystemMessageManager, WAVE 8) and the
|
||||
status-message queue (StatusMessagePool) — deferred systems, cleanly marked. `SeekVoltageGraph::Execute` (@004c6934)
|
||||
is a cluster-child (not config-called) — its 4 Seek* attributes are the only remaining publish, non-blocking.
|
||||
|
||||
### Phase 3 — SIM/MODEL
|
||||
- ✅ **Aggregate HeatSink-bank** (0xBBE) — DONE (commit 16f5f54). Reconstructed `AggregateHeatSink : HeatSink`
|
||||
|
||||
Reference in New Issue
Block a user