Enhance school day structure and decision-making for lunch breaks
- Updated `ai.md` to clarify the mechanics of hunger restoration and the importance of lunch breaks in the school schedule. - Revised `schedule.md` to detail the new lunch break structure, allowing for separate sittings for different grade levels. - Enhanced `Decision.cs` and `DecisionPlanner.cs` to incorporate logic for lunch breaks, ensuring that students only leave lessons during their designated lunch windows. - Updated `DayFrameDef` and related classes to support multiple lunch breaks and validate their configurations. - Adjusted tests to validate the new decision-making logic regarding lunch breaks and hunger management, ensuring robust functionality. - Improved localization strings to reflect changes in the school day structure and lunch functionalities.
This commit is contained in:
+12
-2
@@ -177,7 +177,16 @@
|
||||
|
||||
Декей включается. Голод — столовая, туалет — санузел, общение — перемена рядом с
|
||||
одноклассниками. Сон **за кадром**: человек вне школы отдыхает, и утром приходит выспавшимся.
|
||||
Ночной школы у нас нет, а изображать её ради одной полоски — лишняя работа.
|
||||
Ночной школы у нас нет, а изображать её ради одной полоски — лишняя работа. **Голод восстанавливается
|
||||
там же**: дома завтракают и ужинают, иначе дефицит копится из дня в день и вся школа через неделю
|
||||
сидит на нуле — так и было, пока это не измерили.
|
||||
|
||||
**Обед — расписание, а не порыв.** Действие с `lunch: true` предлагается только в свою смену
|
||||
(`DayFrameDef.lunchBreaks`), зато в неё идут и те, кто ещё не проголодался до порога. Иначе
|
||||
получается одно из двух: либо класс уходит с урока в столовую, когда приспичило, либо — если
|
||||
ждать порога — вся параллель проскакивает свою смену и голодает до вечера. Смены разводят
|
||||
параллели: в `core` младшие едят после третьего урока, старшие после четвёртого, и каждая такая
|
||||
перемена становится длинной.
|
||||
|
||||
Прогресс-бары нужд в карточке уже нарисованы. В этом срезе они впервые начнут шевелиться.
|
||||
|
||||
@@ -302,7 +311,8 @@
|
||||
| Планирование | Вырожденный GOAP: «дойти → сделать», два предусловия |
|
||||
| Переключение | Начатое доводится до конца, если новая цель не сильно тяжелее |
|
||||
| Частота решений | По событиям: звонок, конец действия, приход, порог нужды |
|
||||
| Нужды | Декей включается; сон вне школы |
|
||||
| Нужды | Декей включается; сон и голод восстанавливаются вне школы |
|
||||
| Обед | Смены по параллелям в каркасе дня; в свою смену едят и не проголодавшиеся |
|
||||
| Последствия | Навык на уроке, видимые опоздание и прогул. Оценок нет |
|
||||
| Игрок | Наблюдает; приказов нет |
|
||||
| Поток присутствия | Своё сообщение, ~2 Гц, по всей школе, фильтр на клиенте |
|
||||
|
||||
@@ -11,9 +11,12 @@ QSP: не «полотно текста + список действий», а п
|
||||
Ориентир по экрану школы (после часов и паузы, которые уже есть):
|
||||
|
||||
- **Карта** — дерево локаций (tree view).
|
||||
- **Общие события** — то, что происходит в школе целиком, не привязано к выбранному узлу.
|
||||
- **Выбранная локация** — что происходит именно там.
|
||||
|
||||
Отдельной панели общих событий нет: пока ленты событий не существует, постоянно пустая треть
|
||||
экрана только мешала, и место отдано вкладкам «Карта» и «Люди». Появится лента — вернётся и
|
||||
панель; решение принято в фазе 8, здесь оно записано.
|
||||
|
||||
Картинок локаций и портретов в этом горизонте нет; позже можно добавить, не ломая панели.
|
||||
Анимация пока только переходы панелей/списков и живые цифры (часы, счётчики). Графики —
|
||||
когда появятся числа, которые ими стоит показывать, не раньше.
|
||||
@@ -30,10 +33,9 @@ QSP: не «полотно текста + список действий», а п
|
||||
|
||||
Это и реализуем. Нового геймплея сверх этого не закладываем.
|
||||
|
||||
**Экран школы.** Часы, пауза, скорость. Три панели:
|
||||
**Экран школы.** Часы, пауза, скорость. Две панели:
|
||||
|
||||
- дерево карты;
|
||||
- общие события — **пусто** (заголовок и пустое состояние);
|
||||
- дерево карты (позже к нему вкладкой встанут «Люди»);
|
||||
- выбранная локация (комната, этаж, корпус **или двор**): имя, предметы, персонажи (пусто),
|
||||
действия на месте (пусто), должности. Секции те же; где данных нет — пустое состояние.
|
||||
|
||||
@@ -49,7 +51,7 @@ QSP: не «полотно текста + список действий», а п
|
||||
|
||||
| Тема | Решение |
|
||||
| --- | --- |
|
||||
| Вид внутри школы | Менеджер: дерево + общие события + содержимое локации |
|
||||
| Вид внутри школы | Менеджер: дерево (вкладкой с «Людьми») + содержимое локации |
|
||||
| Рендер | DOM, не WebGL/Pixi |
|
||||
| Картинки | Нет в этом горизонте |
|
||||
| Анимация | Переходы и живые цифры |
|
||||
|
||||
@@ -290,13 +290,15 @@ Protocol ← Server → Simulation → People → Content
|
||||
|
||||
## Просмотр
|
||||
|
||||
Не отдельный экран. Список людей — **панель в оболочке менеджера**, рядом с картой и событиями:
|
||||
уходя в отдельный экран, игрок теряет из виду часы, локацию и события, а смысл этой оболочки
|
||||
Не отдельный экран. Список людей — **панель в оболочке менеджера**, рядом с картой:
|
||||
уходя в отдельный экран, игрок теряет из виду часы и локацию, а смысл этой оболочки
|
||||
ровно в том, чтобы всё было на одном экране. Ориентир — прогрессивный QSP: текст, списки и ссылки,
|
||||
без сцены.
|
||||
|
||||
Панель «Люди» занимает нижний ряд во всю ширину — фильтрам, колонкам и пейджеру нужна ширина,
|
||||
которой нет в колонке шириной в треть экрана.
|
||||
Панель «Люди» — вторая вкладка той же панели, что и карта: фильтрам, колонкам и пейджеру нужна
|
||||
ширина, а держать список третьим рядом под картой значило бы отдать ему высоту, которой на экране
|
||||
школы нет. Вкладка переключается рядом с деревом, выбранная строка открывает карточку справа —
|
||||
там же, где содержимое локации.
|
||||
|
||||
- **Фильтры**: роль (ученики / работники / родители), параллель и литера, должность, пол,
|
||||
возрастной диапазон.
|
||||
@@ -388,7 +390,7 @@ Protocol ← Server → Simulation → People → Content
|
||||
| Имена и язык UI | Независимы |
|
||||
| Библиотека | `HSchool.People`: зависит от Content, не знает Arch и ASP.NET |
|
||||
| Детерминизм | Сид в сейве, свой сид на семью; родной язык — часть входа |
|
||||
| Просмотр | Панель в оболочке менеджера, нижний ряд; не отдельный экран |
|
||||
| Просмотр | Панель в оболочке менеджера, вкладкой рядом с картой; не отдельный экран |
|
||||
| Список | Фильтры, сортировки, пейджинг; в строке — только лёгкие поля |
|
||||
| Транспорт списка | HTTP по опубликованному снимку ростера |
|
||||
| Транспорт карточки | Запрос в воркер, потому что нужды живые |
|
||||
|
||||
@@ -131,7 +131,8 @@
|
||||
| --- | --- |
|
||||
| Кто строит | Сервер, детерминированно, из плана и назначений |
|
||||
| Правки игрока | Можно; исправленное закрепляется и переживает перестроение |
|
||||
| Каркас дня | `core`: 8:30, до 7 уроков, 45 минут, перемены 10 и одна 20; одна смена |
|
||||
| Каркас дня | `core`: 8:30, до 7 уроков, 45 минут, перемены 10; длинные — те, в которые обедают |
|
||||
| Обеденные смены | Список в каркасе дня: какая параллель ест после какого урока |
|
||||
| Длина недели | В настройках, пять дней по умолчанию |
|
||||
| Каникулы | Дефами, диапазонами дат; в каникулы расписания нет |
|
||||
| Учебный план | Часы из `SubjectDef`, расписание их только расставляет |
|
||||
|
||||
Reference in New Issue
Block a user