Update design documentation to clarify the structure and relationships of game elements. Enhance the definitions of TerritoryDef, BuildingDef, and FloorDef, and introduce new concepts like Patch for modifying definitions. Revise the near-term design to outline the UI structure and interactions, ensuring a clear framework for future development phases.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Фаза 3. Каталог def и карта
|
||||
|
||||
## Зависимости
|
||||
|
||||
- [Фаза 2](02-school-worker.md) — каталог и раскладка живут у работника школы
|
||||
|
||||
## Зачем
|
||||
|
||||
Типы в 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.
|
||||
Reference in New Issue
Block a user