Add class-teacher slots on SchoolClass with owner-only assign/clear.

EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 09:37:37 +03:00
co-authored by Cursor
parent 99eca80d6d
commit 4096d5306e
22 changed files with 992 additions and 22 deletions
@@ -286,6 +286,23 @@ internal sealed class GameLoopService(
unassign.Result);
break;
case GameCommand.AssignClassTeacher assignClassTeacher:
HandleClassTeacher(
assignClassTeacher.SchoolId,
new WorkerCommand.AssignClassTeacher(
assignClassTeacher.ClassId,
assignClassTeacher.PersonId,
assignClassTeacher.Result),
assignClassTeacher.Result);
break;
case GameCommand.ClearClassTeacher clearClassTeacher:
HandleClassTeacher(
clearClassTeacher.SchoolId,
new WorkerCommand.ClearClassTeacher(clearClassTeacher.ClassId, clearClassTeacher.Result),
clearClassTeacher.Result);
break;
case GameCommand.PinLesson pin:
HandleTimetable(
pin.SchoolId,
@@ -385,6 +402,14 @@ internal sealed class GameLoopService(
}
}
private void HandleClassTeacher(int schoolId, WorkerCommand command, TaskCompletionSource<ClassTeacherOutcome> result)
{
if (!_workers.TryGetValue(schoolId, out var worker) || !worker.Post(command))
{
result.TrySetResult(ClassTeachers.UnknownSchool());
}
}
private void HandleTimetable(int schoolId, WorkerCommand command, TaskCompletionSource<TimetableOutcome> result)
{
if (!_workers.TryGetValue(schoolId, out var worker) || !worker.Post(command))