Files
przygody-pana-cegly/progression/EventLog.cs
Gabriel Kaszewski 05149bb4a9 feat(progression): Profile aggregate (slice 4)
best times only improve; achievement unlock announces on the transition
only, so popup/Steam subscribers cannot double-fire; statistics are
increase-only (IncrementStat took any int).

RelockAchievement is console-only and documented as not reaching Steam -
a Steam achievement cannot be un-earned, so the disagreement is
permanent and deliberate.

refactor: extract EventLog, composed by both aggregates now that the
duplication actually exists. 34 tests.
2026-07-28 18:56:58 +02:00

20 lines
550 B
C#

namespace Mr.BrickAdventures.Progression;
/// <summary>
/// Collects the events an aggregate raises until someone drains them. Composed rather than
/// inherited — aggregates own one, they are not a kind of it.
/// </summary>
internal sealed class EventLog
{
private readonly List<ProgressionEvent> _events = new();
public void Raise(ProgressionEvent @event) => _events.Add(@event);
public IReadOnlyList<ProgressionEvent> Drain()
{
var drained = _events.ToList();
_events.Clear();
return drained;
}
}