LANTERN purge B3+B5: delete the cycle/core/win-lose spine + onboarding; save epoch v7
Deletes CyclePhaseSystem, GoalReachedSystem, CoreDamage/CoreRestore, ThreatDirector, CoreIntegrity/GoalProgress/RunPhase/RunOutcome/ThreatState components, CoreVisualFeedbackSystem, and the whole Client/Onboarding slice (+6 test files). Keepers reworked: RunDirectorSystem (UpdateBefore attr + launch guard + goal/threat bank removed; sole SaveRequest raiser now), CycleDirectorSpawnSystem (ledger/meta host only), WaveSystem UNGATED (waves run wherever a WaveDirector is baked), EnemyAISystem core-fallback stripped, AmbientAudioSystem reworked (bed + run cues; no CycleState gate), MusicSystem RunInfo-only, HudSystem big trim (goal meter, core bar, siege banner, terminal banner, outcome flash, onboarding hook all gone), MetaShop/ClassPrep/AimReticle siege gates dropped, DebugOverlay/ops re-meant (SpawnWave=force next wave, EndSiege=quiet arena; SetCalm/AdvanceGoal/SetHeat retired, bytes reserved), TuningConfig Core knobs retired (ids 20-23 reserved), StorageMath.DrainFraction deleted, HowToPlay copy rewritten. Save epoch v7 (fresh epoch, operator-approved): SaveData drops goal/core/outcome + conveyor/machine-IO fields; MinLoadableVersion=7; PendingSave/PendingStructure trimmed; RollTerminalCampaignForward deleted; SaveStructureScan signature slimmed. 390 tests green; Play world-creation clean (player + waves live, no exceptions). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -57,33 +57,31 @@ namespace ProjectM.Tests
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SpawnWave_Arms_PendingSiege()
|
||||
public void SpawnWave_Forces_Next_Wave_Now()
|
||||
{
|
||||
var (world, group) = MakeWorld("DebugSpawnWave");
|
||||
using (world)
|
||||
{
|
||||
var em = world.EntityManager;
|
||||
var dir = em.CreateEntity(typeof(CycleState), typeof(ThreatState));
|
||||
em.SetComponentData(dir, new CycleState { Phase = CyclePhase.Calm });
|
||||
MakeRequest(em, DebugOp.SpawnWave, 8, 0, Entity.Null);
|
||||
var wave = em.CreateEntity(typeof(WaveState));
|
||||
em.SetComponentData(wave, new WaveState { Phase = WavePhase.Spawning, NextActionTick = 999999, RemainingToSpawn = 0 });
|
||||
MakeRequest(em, DebugOp.SpawnWave, 0, 0, Entity.Null);
|
||||
|
||||
group.Update();
|
||||
|
||||
Assert.AreEqual(8, em.GetComponentData<ThreatState>(dir).PendingSiegeSize,
|
||||
"SpawnWave arms a pending siege of the requested size.");
|
||||
var w = em.GetComponentData<WaveState>(wave);
|
||||
Assert.AreEqual(WavePhase.Lull, w.Phase, "SpawnWave resets to a due Lull so WaveSystem starts the next wave.");
|
||||
Assert.AreEqual(0u, w.NextActionTick, "SpawnWave makes the next wave due immediately.");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EndSiege_Forces_WaveState_Lull_And_Clears_Pending()
|
||||
public void EndSiege_Quiets_The_Arena()
|
||||
{
|
||||
var (world, group) = MakeWorld("DebugEndSiege");
|
||||
using (world)
|
||||
{
|
||||
var em = world.EntityManager;
|
||||
var dir = em.CreateEntity(typeof(CycleState), typeof(ThreatState));
|
||||
em.SetComponentData(dir, new CycleState { Phase = CyclePhase.Siege });
|
||||
em.SetComponentData(dir, new ThreatState { PendingSiegeSize = 5, SiegeStartTick = 100 });
|
||||
var wave = em.CreateEntity(typeof(WaveState));
|
||||
em.SetComponentData(wave, new WaveState { Phase = WavePhase.Spawning, RemainingToSpawn = 3 });
|
||||
for (int i = 0; i < 2; i++)
|
||||
@@ -96,9 +94,9 @@ namespace ProjectM.Tests
|
||||
var w = em.GetComponentData<WaveState>(wave);
|
||||
Assert.AreEqual(WavePhase.Lull, w.Phase, "EndSiege drives the wave to Lull.");
|
||||
Assert.AreEqual(0, w.RemainingToSpawn, "EndSiege stops further spawning.");
|
||||
Assert.AreEqual(0, em.GetComponentData<ThreatState>(dir).PendingSiegeSize, "EndSiege clears any pending siege.");
|
||||
using var husks = em.CreateEntityQuery(typeof(EnemyTag));
|
||||
Assert.AreEqual(0, husks.CalculateEntityCount(), "EndSiege culls the remaining Husks.");
|
||||
Assert.AreNotEqual(0u, w.NextActionTick, "EndSiege pushes the next wave far out (quiet arena).");
|
||||
using (var husks = em.CreateEntityQuery(typeof(EnemyTag)))
|
||||
Assert.AreEqual(0, husks.CalculateEntityCount(), "EndSiege culls the remaining Husks.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user