2.8 KiB
2.8 KiB
Фаза 3. Каталог def и карта
Зависимости
- Фаза 2 — каталог и раскладка живут у работника школы
Зачем
Типы в JSONC, инстанс карты в школе, валидация связности. Без этого нечему редактировать в create.
Задачи
- Проект
HSchool.Content(+ тесты): JSONC, defs, локали, граф карты, валидация. Не Arch, не ASP.NET - Загрузчик пачки документов (сервер потом подставит папки
mods/) coreвсегда первый; дальше моды по списку; повторdefName/ ключа локали — последний победил, warning в лог- Резолв ссылок
ThingDef.actions, слотов RoomDef после чтения всего набора - Карта-инстанс: двор (TerritoryDef) всегда есть; здания (BuildingDef), этажи (FloorDef + id), помещения, двусторонние рёбра
- Валидация: неизвестный def, ребро в никуда, несвязный граф, изолированный узел
- Пустая комната допустима; должности для панели — из def узла, если они там есть
- Каталог замораживается на работнике при create/load; сейв хранит id модов и раскладку, не развёрнутый каталог
- Нет папки мода из сейва — школу не стартовать, файл не удалять, в лог
- Обновить ориентир в
AGENTS.md(куда класть defs) - Наследование:
parent,abstract, замена полей, запрет цикла и чужого вида, abstract нельзя на карту - Патчи из
patches/: add / replace / remove по JSON Pointer; неизвестный op или нет target — ошибка каталога - Тесты Content: фикстуры JSONC, last-wins, parent/abstract, патч add в actions, связность, пустая комната, одна комната без двора — отказ
Критерий готовности
dotnet testпокрывает загрузчик и валидацию без хоста (HSchool.Content.Tests)- Ванильная раскладка
mods/core/maps/default.jsoncпроходит валидацию
Стоп
Не UI редактора. Не исполнение ActionDef. Не xpath и не новые op сверх add/replace/remove.