flat snapshot record per aggregate - separate files mean saving a run doesn't rewrite the Profile, deleting a slot is deleting a file, and a corrupt slot doesn't cost achievements or best times. snapshots hold primitives so Restore re-runs the value-object factories; a serialiser building LevelId directly would bypass every guard. LoadResult has three outcomes: Absent != Corrupt. Collapsing them is the bug where a version bump made ContinueGame overwrite the save. Profile.Restore writes collections directly - replaying UnlockAchievement would re-fire popups and Steam pushes on every load. 44 tests.
13 lines
377 B
C#
13 lines
377 B
C#
namespace Mr.BrickAdventures.Progression;
|
|
|
|
/// <summary>
|
|
/// Where Playthroughs are kept. One per slot; the JSON adapter writes one file each, so saving a run
|
|
/// never rewrites the Profile and deleting a slot is deleting a file.
|
|
/// </summary>
|
|
public interface IPlaythroughStore
|
|
{
|
|
void Save(Playthrough playthrough);
|
|
|
|
LoadResult<Playthrough> Load(PlaythroughId id);
|
|
}
|