docs: GAUGE_COMPOSITE Phase 3 — aggregate bank + condenser valve gauge 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
aae3ce29d8
commit
d54e0009d7
+21
-8
@@ -545,14 +545,27 @@ a prose-only vtable slot AVs on first call).
|
||||
- **TODO (lower priority):** **PrepEngrScreen** (@004c7b30/7bf0/7e48 — engineering full-screen), **SectorDisplay**
|
||||
(@004c9e10/ca07c) + **MessageBoard** (@004cb678), **SeekVoltageGraph::Execute** (@004c6934) + real FindAttributeIndex.
|
||||
|
||||
### Phase 3 — SIM/MODEL (TODO)
|
||||
- **Aggregate HeatSink-bank** (0xBBE; ctor @4ae8d0, sim @4ae73c, parser @4ae9dc — currently #if 0'd in
|
||||
heatfamily_reslice.cpp, a plain HeatSink built instead): publish HeatSinkCount + AmbientTemperature (a
|
||||
constant 300); rewire CreateHeatSinkBankSubsystem + bump the alloc. Clears the last config-binding NULL.
|
||||
- **Condenser valve**: reconstruct SetValveSetting (vtable+0x48 → coolantFlowScale@0x15C) + the real MoveValve
|
||||
msg-handler @4ae464 (the reconstructed @4afbe0 is MISLABELED = the MechControlsMapper) so a player valve
|
||||
toggle moves the slider AND changes heat flow. Add the Condenser OWN table (ValveSetting→coolantFlowScale) +
|
||||
#if 0 the heat.cpp Condenser dup-ctor stubs (the real heatfamily_reslice def currently wins by link order).
|
||||
### Phase 3 — SIM/MODEL
|
||||
- ✅ **Aggregate HeatSink-bank** (0xBBE) — DONE (commit 16f5f54). Reconstructed `AggregateHeatSink : HeatSink`
|
||||
(ctor @4ae8d0, GUID 0x50e590), byte-exact + static_assert-locked (heatSinkCount@0x1D0, ambientTemperature
|
||||
@0x1D4=300, helper@0x1D8, sizeof 0x1E4). Publishes HeatSinkCount + AmbientTemperature via a dense-prefix
|
||||
table chained to HeatSink::NextAttributeID. CreateHeatSinkBankSubsystem moved to heatfamily_reslice.cpp,
|
||||
builds the real class at 0xBBE. **DELIBERATE DEVIATION:** keep the base HeatSinkSimulation; do NOT install
|
||||
the authentic Performance @4ae73c (it derefs a raw self+0xE0→[+0x158] that doesn't map in our layout →
|
||||
AV/NaN for EVERY mech; ambientTemperature is a frozen constant so the gauge reads 300 either way). Clears
|
||||
the LAST config-binding NULL: **`[attr] HeatSink/AmbientTemperature OK`, all 50 bindings resolve (0 NULL).**
|
||||
- ✅ **Condenser valve gauge** — DONE (commits b91057a, aae3ce2). Two coupled fixes:
|
||||
(1) **Dedup** — heat.cpp's STUB Condenser ctor/dtor/TestClass/TestInstance/CreateStreamedSubsystem
|
||||
ODR-duplicated the REAL reslice bodies and WON under /FORCE → the real ctor (valveState=1) was shadowed,
|
||||
valveState=0xCDCDCDCD. #if 0'd the heat.cpp stubs (kept DefaultData/GetClassDerivations/ResetToInitialState).
|
||||
(2) **RecomputeCondenserValves** (FUN_0049f788) — `FinishConstruction()` at the Mech ctor tail was a no-op
|
||||
stub → coolantFlowScale never written (stayed 0). Reconstructed it (coolantFlowScale_i = valveState_i /
|
||||
ΣvalveState + condenserAlarm change-pulse), wired at the ctor post-init pass. **Verified: [valve] the BLH's
|
||||
6 condensers each read flow=0.166667 (=1/6).** ValveSetting→coolantFlowScale now authentic.
|
||||
(3) **MoveValve** — the reconstructed @4afbe0 body was a MISLABEL (MechControlsMapper mode cycler);
|
||||
disassembled the real handler @4ae464 (valveState cycle 1→5→50→0 + RecomputeCondenserValves) and replaced
|
||||
it. DORMANT: its guard + message route go through the 0xBD3 SubsystemMessageManager (WAVE 8) → the valve
|
||||
gauge shows the static authentic 1/N until 0xBD3 lands (no V-key bring-up stand-in added).
|
||||
- ✅ **Combat SCORING feed** (KILLS/SCORE) — DONE (commit 34aaa7d; scoring-feed-decode workflow). The
|
||||
scoreboard read 0 for 4 reasons (none was handler logic — the ScoreMessage/VehicleDead/ScoreInflicted
|
||||
handlers were already reconstructed): (1) no producer — added the posts (per-hit ScoreInflicted at the
|
||||
|
||||
Reference in New Issue
Block a user