namespace Mr.BrickAdventures.Progression;
///
/// Something that happened to player progression, raised by an aggregate as part of the operation
/// that caused it. Plain records with no engine dependency — an adapter republishes them as Godot
/// signals (ADR-0004), which is what makes "state changed ⇒ signal fired" un-bypassable.
///
public abstract record ProgressionEvent;
/// Raised when a Playthrough loses its last life.
public sealed record RunEnded : ProgressionEvent;
///
/// Raised the first time an Achievement is unlocked, and only then — so a subscriber that shows a
/// popup or pushes to Steam cannot fire twice however often it is told.
///
public sealed record AchievementUnlocked(AchievementId Achievement) : ProgressionEvent;