Class CampaignSave<CampaignState, Result, World, TurnState>
One save slot for a whole campaign, over core.SaveSystem. SaveSystem deliberately owns
one state value and mwl's persistence owns one world, so neither saves a campaign's level
sequence, its world and its turn together; this is the composition, not a second save
format. Versioning, migrations, previews, the storage fallback and slot listing are all
SaveSystem's, unchanged.
Capturing takes each piece's own snapshot(), so the pieces stay responsible for what
resuming them means: Campaign.restore and SimulationRuntime.restore read their halves
back, and the game reads its own world.
One save slot for a whole campaign, over
core.SaveSystem.SaveSystemdeliberately owns one state value andmwl's persistence owns one world, so neither saves a campaign's level sequence, its world and its turn together; this is the composition, not a second save format. Versioning, migrations, previews, the storage fallback and slot listing are allSaveSystem's, unchanged.Capturing takes each piece's own
snapshot(), so the pieces stay responsible for what resuming them means:Campaign.restoreandSimulationRuntime.restoreread their halves back, and the game reads its own world.Example