new progression.adapters project, no engine reference. Stores take a directory path; Godot resolves user:// with GlobalizePath and passes it in, which is what makes them testable at all - originally I'd written this slice off as untestable. version lives in a file envelope, not the snapshot, so the domain only knows the current shape. A newer-build save reports Corrupt with a reason instead of masquerading as "no save" and getting overwritten. atomic write via temp + rename. One file per aggregate: saving a run leaves the profile file byte-identical, asserted. guard rail fixed - it was matching prose in doc comments, now anchored to using-directives plus a project.assets.json check. 63 tests.
11 lines
403 B
C#
11 lines
403 B
C#
namespace Mr.BrickAdventures.Progression.Adapters;
|
|
|
|
/// <summary>
|
|
/// What actually goes in a save file: a version alongside the snapshot.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// The version lives here rather than in the snapshot record so the domain only ever knows the
|
|
/// current shape. Migration is entirely this layer's problem.
|
|
/// </remarks>
|
|
internal sealed record SaveEnvelope<T>(int Version, T Data);
|