Mech phase 2->4: roster core complete (16 classes) + segment-walk blueprint

Records the Mech-ctor segment-walk factory (mech.cpp:1146-1330) with the full
MISLABELED ClassID->real-class map (VDATA enum names differ from the real
classes). 16 roster classes done; 7 remain for a complete walk (Reservoir,
HeatSink-bank, Searchlight, MechTech, ThermalSight, SubsystemMessageManager,
Actuator). Blueprint in MECHSUB.NOTES.md guides phase 4.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-20 00:29:39 -05:00
co-authored by Claude Fable 5
parent 1cab46ae72
commit 9e0f045273
+43 -4
View File
@@ -130,7 +130,46 @@ Simulation method + CreateStreamedSubsystem staged with Fail. Embedded alarms =
AlarmIndicator(N); filters = AverageOf<Scalar>; owner->GetInstance() !=
ReplicantInstance gates the master performance install.
**Next:** HeatWatcher (: MechSubsystem) then PowerWatcher (: HeatWatcher) unblock
the Torso/HUD/Gyroscope branch (the Mech's directly-referenced subsystems); Myomers
+ Condenser are direct leaves; then the weapon family. After the roster:
finalize MECH.HPP layout (probe sizeof==0x854), then the Mech ctor + segment walk.
## ROSTER CORE COMPLETE (2026-07-20) — 16 classes verified
All committed + compile-verified: MechSubsystem, HeatableSubsystem, HeatSink,
HeatWatcher, PowerWatcher, PoweredSubsystem, Generator, Condenser, Sensor,
Myomers, Gyroscope, HUD, Torso, MechWeapon, Emitter (+ surviving PPC/GaussRifle),
ProjectileWeapon, MissileLauncher, AmmoBin. Tree links clean.
## Phase-4 blueprint: the Mech-ctor segment-walk factory (mech.cpp:1146-1330)
The Mech ctor allocates `subsystemArray[subsystemCount]` (+GetSubsystem/Count),
then loops segments (from id 2) switching on `seg->classID` to `new <Class>(this,
id, seg)`, caching the key ones. **The VDATA ClassID enum names are MISLABELED vs
the real class** (BT411's mapping):
| ClassID | enum name | REAL class | built? |
|---|---|---|---|
| 0xBBD | CockpitClassID | Condenser | ✅ |
| 0xBBE | SensorClassID | HeatSink bank | ~ (HeatSink ✅; bank variant TODO) |
| 0xBC0 | CondenserClassID | **Reservoir** | ❌ TODO |
| 0xBC1 | GeneratorClassID | Generator | ✅ |
| 0xBC2 | PoweredSubsystemClassID | PoweredSubsystem | ✅ |
| 0xBC3 | MyomersClassID | Sensor | ✅ |
| 0xBC4 | GyroClassID | Gyroscope | ✅ (cache gyroSubsystem) |
| 0xBC5 | SinkSourceClassID | Torso | ✅ (cache sinkSourceSubsystem) |
| 0xBC6 | ActuatorClassID | Myomers | ✅ |
| 0xBC8 | WeaponEmitterClassID | Emitter | ✅ (weaponCount++) |
| 0xBCB | JumpJetClassID | AmmoBin | ✅ |
| 0xBCD | MechWeaponClassID | ProjectileWeapon | ✅ |
| 0xBCE | MissileWeaponClassID | GaussRifle | ✅ |
| 0xBD0 | BallisticWeaponClassID | MissileLauncher | ✅ |
| 0xBD3 | SubsystemMessageManagerID | **SubsystemMessageManager** | ❌ TODO |
| 0xBD4 | GaussWeaponClassID | Emitter (PPC) | ✅ |
| 0xBD6 | MechTechClassID | HUD | ✅ (cache hudSubsystem) |
| 0xBD8 | LegSubsystemClassID | **Searchlight** (: PowerWatcher) | ❌ TODO |
| 0xBDC | HeatableClassID | **MechTech** | ❌ TODO |
| 0xBDE | DisplayClassID | **ThermalSight** (: PowerWatcher) | ❌ TODO |
Remaining subsystem classes for a full walk: Reservoir, HeatSink-bank variant,
Searchlight, MechTech, ThermalSight, SubsystemMessageManager, Actuator (fallback).
Then the Mech member layout (subsystemArray/subsystemCount + the capability chains
controllable/heatable/weaponRoster/damageable + the alarms/reticle/state-indicators
/SequenceControllers/NameFilter/CStrings embedded members) must be named in
MECH.HPP for the ctor to set them.