Files
h-school/docs/phases/01-shell/03-defs-map.md
T

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.