The world now executes. Entity::Execute only PerformAndWatch's entities in application state RunningMission, reached by two RunMissionMessages (WaitingForLaunch->LaunchingMission->RunningMission). The 2nd is dispatched by Player::ManageApplicationStatus when the launch fade expires -- but that only runs inside PlayerSimulation, not the launch-phase HuntForDropZone. So the player must switch Performance onto PlayerSimulation after it spawns. - BTPLAYER.CPP DropZoneReplyMessageHandler: after CreatePlayerVehicle + InitializePlayerLink, choose the per-vehicle Performance by class -- Mech -> SetPerformance(PlayerSimulation)+SetScoringPlayerFlag; else CameraShipSimulation. - BTPLAYER.CPP PlayerSimulation: chains the authentic base Player::PlayerSimulation (CalcRanking + ManageApplicationStatus + vehicle-pos copy + status service); console SCORE-delta flush deferred to the scoring wave. - SENSOR.CPP SensorSimulation: minimal-safe partial (radarPercent = 1 - GetSubsystemDamageLevel, sensor healthy) so the roster tick path can't Fail once RunningMission engages. The heat/electrical gating awaits the power/heat sim wave (PoweredSubsystem/Generator/HeatSink/HeatWatcher *Simulation staged). Verified: BT_MECH_LOG run reaches "[tick] roster live (first Sensor frame)", two RunMissionHandler transitions, zero Fail/Exception. The mech is executed each frame; its BODY Performance is still DoNothingOnce (real Mech::Simulate = Phase 5.3, now the frontier). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.0 KiB
SENSOR.CPP — reconstruction notes
Built against the surviving 4.10 CODE header CODE/BT/BT/SENSOR.HPP (Sensor :
PoweredSubsystem). Attributes RadarPercent / SelfTest / BadVoltage chain
PoweredSubsystem::NextAttributeID.
Reconstructed
- Ctor: primes radarPercent=1, selfTest=False, badVoltage=False and installs
Sensor::SensorSimulationas the per-frame Performance (unless the owner is a replicant copy, which is console-driven). TestClass/TestInstance/ResetToInitialState/ the shared-data statics.
PARTIAL: Sensor::SensorSimulation (per-frame)
The authentic SensorSimulation (BT411 @004b1c4c) does, each frame:
PoweredSubsystem::PoweredSubsystemSimulation(time_slice)(power/voltage tick),radarPercent = RadarBaseline - GetSubsystemDamageLevel(),- gate on the electrical Ready state (
badVoltage, zeroes radar if not Ready), - gate on the heat state — Normal / Degradation (
radar *= 0.5) / Failure (radar 0, selfTest off).
Steps 1/3/4 depend on the power/heat per-frame simulation chain that is not
yet reconstructed — PoweredSubsystem::PoweredSubsystemSimulation,
Generator::GeneratorSimulation, HeatSink::HeatSinkSimulation,
HeatWatcher::WatchSimulation, PowerWatcher::Simulation are all staged
Fail. None of those are installed as Performances yet (only Sensor installs
one), so the roster otherwise ticks DoNothingOnce.
Until the power/heat wave, SensorSimulation runs the one reconstructed input
(step 2, using MechSubsystem::GetSubsystemDamageLevel, clamped ≥ 0) and
reports the sensor healthy (selfTest=True, badVoltage=False). This is a
deliberately safe partial: it keeps the engine's Entity::PerformAndWatch
roster-tick path alive (it must not Fail, or the whole per-frame simulation
aborts the frame the mission reaches RunningMission) while producing a real
radar-capability value. Deepen it with the power/heat simulation wave.
A gated one-shot (BT_MECH_LOG) logs the first Sensor frame — the marker that
the entity/roster simulation has engaged (RunningMission).