gauge-complete P4b: AggregateHeatSink 0xBBE -> HeatSink/AmbientTemperature bound (last config NULL cleared)
The 0xBBE heat-sink BANK was built as a plain HeatSink, so the numeric-R cockpit gauge binding HeatSink/AmbientTemperature (L4GAUGE.CFG:4552) had no publisher -> the LAST unresolved config attribute. Reconstruct AggregateHeatSink : HeatSink (ctor @4ae8d0, own GUID 0x50e590), byte-exact + static_assert-locked (heatSinkCount@0x1D0, ambientTemperature @0x1D4=300, helper@0x1D8 0xC link node, sizeof 0x1E4 == factory alloc @9993). Publish HeatSinkCount + AmbientTemperature via a dense-prefix attribute table chained to HeatSink::NextAttributeID (shared HeatSink table unchanged, so CoolantMass/CoolantCapacity keep resolving). Move CreateHeatSinkBankSubsystem into heatfamily_reslice.cpp (needs the class def) and build the real class at factory case 0xBBE; mech.cpp unchanged. DELIBERATE DEVIATION (documented in the class): keep the base HeatSinkSimulation the HeatSink ctor installs; do NOT reimplement the authentic Performance @4ae73c -- it derefs a raw self+0xE0 -> [+0x158] that does not map in our compiled layout (AV/NaN, and runs for EVERY mech), and ambientTemperature is a frozen constant so the gauge reads 300 either way. Authentic relaxation model deferred. Verified: [attr] HeatSink/AmbientTemperature OK; all 50 config attribute bindings resolve (0 NULL); no every-mech crash; combat TARGET DESTROYED, FIRED #41+, un-regressed. 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
12c4254aae
commit
16f5f545ce
@@ -1010,9 +1010,5 @@ Subsystem *CreateCondenserSubsystem(Mech *owner, int id, void *seg)
|
||||
Condenser(owner, id, (Condenser::SubsystemResource *)seg, Condenser::DefaultData);
|
||||
}
|
||||
|
||||
Subsystem *CreateHeatSinkBankSubsystem(Mech *owner, int id, void *seg)
|
||||
{
|
||||
Check(sizeof(HeatSink) <= 0x1e4);
|
||||
return (Subsystem *) new (Memory::Allocate(0x1e4))
|
||||
HeatSink(owner, id, (HeatSink::SubsystemResource *)seg, HeatSink::DefaultData);
|
||||
}
|
||||
// CreateHeatSinkBankSubsystem (0xBBE) now lives in heatfamily_reslice.cpp -- it
|
||||
// builds the real AggregateHeatSink (which needs that TU's class definition).
|
||||
|
||||
Reference in New Issue
Block a user