feat(progression): Attempt ledger with terminal-outcome guard (slice 2)
Attempt carries its LevelId so settlement decides First Clear vs Replay without trusting the caller. Outcome is terminal and refuses to change: one death costs one life, one completion banks once. Coins.Zero/Add driven out by the ledger rather than added up front. 21 tests. ADR-0005: Playthrough settles Attempts, has no LoseLife.
This commit is contained in:
12
progression/AttemptOutcome.cs
Normal file
12
progression/AttemptOutcome.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace Mr.BrickAdventures.Progression;
|
||||
|
||||
/// <summary>
|
||||
/// How an Attempt finished, or that it has not finished yet. An Attempt reaches a terminal outcome
|
||||
/// once and refuses to change afterwards — that refusal is what guarantees one death costs one life.
|
||||
/// </summary>
|
||||
public enum AttemptOutcome
|
||||
{
|
||||
InProgress,
|
||||
Died,
|
||||
Cleared,
|
||||
}
|
||||
Reference in New Issue
Block a user