Add lesson marks 2-5 from lesson quality once per slot.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 11:45:14 +03:00
co-authored by Cursor
parent 4c8d91c6f3
commit b359bebb41
16 changed files with 702 additions and 21 deletions
+11
View File
@@ -18,6 +18,7 @@ public sealed class School : IDisposable
private bool _disposed;
private readonly List<PersonLogEvent> _dayLog = [];
private readonly HashSet<string> _lessonLogOnce = new(StringComparer.Ordinal);
private readonly HashSet<string> _lessonMarkOnce = new(StringComparer.Ordinal);
private readonly List<WorldEvent> _worldEvents = [];
internal School(int id, string name, DateTime startDate, DefCatalog? catalog, MapLayout? map)
@@ -153,6 +154,7 @@ public sealed class School : IDisposable
_dayLog.Clear();
LoggedActivity.Clear();
_lessonLogOnce.Clear();
_lessonMarkOnce.Clear();
}
internal void AppendDayLog(PersonLogEvent row) => _dayLog.Add(row);
@@ -172,6 +174,15 @@ public sealed class School : IDisposable
return true;
}
/// <summary>
/// One lesson mark per person per calendar day and period. Survives teacher arriving mid-slot.
/// </summary>
internal bool TryClaimLessonMark(string personId, DateTime day, int period)
{
var key = string.Concat(personId, "\0", day.ToString("yyyy-MM-dd"), "\0", period.ToString());
return _lessonMarkOnce.Add(key);
}
public void QueueDecision(string personId)
{
ObjectDisposedException.ThrowIf(_disposed, this);