- 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.
6.3 KiB
Ближайший горизонт: что видит игрок
Это не текущее состояние кода, а договорённости на ближайшее планирование.
Как устроено сейчас — в architecture.md.
Решение: не PixiJS, а менеджер на DOM
Внутри школы нет 2D-сцены, камеры и спрайтов. Интерфейс ближе к менеджеру, чем к классическому QSP: не «полотно текста + список действий», а панели.
Ориентир по экрану школы (после часов и паузы, которые уже есть):
- Карта — дерево локаций (tree view).
- Выбранная локация — что происходит именно там.
Отдельной панели общих событий нет: пока ленты событий не существует, постоянно пустая треть экрана только мешала, и место отдано вкладкам «Карта» и «Люди». Появится лента — вернётся и панель; решение принято в фазе 8, здесь оно записано.
Картинок локаций и портретов в этом горизонте нет; позже можно добавить, не ломая панели. Анимация пока только переходы панелей/списков и живые цифры (часы, счётчики). Графики — когда появятся числа, которые ими стоит показывать, не раньше.
Клиент остаётся plain DOM + CSS. WebGL-сцены нет.
Симуляция по-прежнему на сервере: ученики и комнаты могут существовать как данные в Arch ECS, даже если клиент рисует строки списка, а не человечков.
Типы комнат, предметов и действий описываются defs (JSONC), конкретная школа — картой-инстансом.
Подробности: defs.md. Дерево в UI — территория (ещё и ходибелая локация) → здания → этажи → помещения.
Первый срез (закрыто)
Это и реализуем. Нового геймплея сверх этого не закладываем.
Экран школы. Часы, пауза, скорость. Две панели:
- дерево карты (позже к нему вкладкой встанут «Люди»);
- выбранная локация (комната, этаж, корпус или двор): имя, предметы, персонажи (пусто), действия на месте (пусто), должности. Секции те же; где данных нет — пустое состояние.
Клик по дереву — фильтр на клиенте. Сервер один раз отдаёт снимок. Язык подписей модов:
?lang= на HTTP-каталоге (диалог создания) и то же значение в Hello на сокете (снимок при
открытии). Не Accept-Language: его легко разъехать с переключателем RU/EN.
Create. Моды (core заблокирован) → каталог → редактор карты или стереть дефолт → имя, дата → школа на диске и в своём потоке.
Не в этом срезе: исполнение действий, живые персонажи, записи в ленте событий, смена модов у живой школы, Pixi, DLL-моды.
Что уже зафиксировано
| Тема | Решение |
|---|---|
| Вид внутри школы | Менеджер: дерево (вкладкой с «Людьми») + содержимое локации |
| Рендер | DOM, не WebGL/Pixi |
| Картинки | Нет в этом горизонте |
| Анимация | Переходы и живые цифры |
| Часы, пауза, скорость | Остаются; это не отменяется панелями |
| Логика игры | Только сервер; клиент шлёт намерения и рисует то, что сказали |
| Данные игры | Defs (типы) + карта (инстанс), см. defs.md |
| Дерево карты | Территория (= двор, узел графа) → здание → этаж → помещение |
| Редактор карты | Только при создании школы |
| Моды | core всегда; остальные — выбор при создании; поздний мод побеждает при споре имён |
| Поток школы | Основа среза: один поток и один ECS world на школу, см. runtime.md |
| Сохранения | На диск; часы не писать на каждом тике |
| События | Панель есть, лента пустая |
| Локация | Одни секции для двора, корпуса, этажа и комнаты |
| Двор | TerritoryDef, узел графа и корень дерева |
| Язык модов | HTTP ?lang=, то же в Hello; не Accept-Language |
| Проекты | Каталог не в Server и не в Simulation, см. projects.md |
| Выбор в дереве | Клиентский фильтр |
| Этаж | FloorDef (тонкий тип); узел карты ссылается на def |
Заведомо не сейчас
- Портреты, арт локаций, схема этажа в пикселях.
- Управление персонажем от первого/третьего лица.
- Победа/кампания, живые персонажи, исполнение «сесть», записи событий.
- Смена модов у живой школы, код модов (DLL).