Add HSchool.Content project for JSONC definitions, catalog, and map validation. Update solution structure to include new content and tests projects. Enhance school management to support mod packs and map instances, ensuring proper loading and validation. Revise documentation to reflect these changes and update tests for new functionality.
This commit is contained in:
+13
-13
@@ -10,19 +10,19 @@
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] Проект `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, связность, пустая комната, одна комната без двора — отказ
|
||||
- [x] Проект `HSchool.Content` (+ тесты): JSONC, defs, локали, граф карты, валидация. Не Arch, не ASP.NET
|
||||
- [x] Загрузчик пачки документов (сервер потом подставит папки `mods/`)
|
||||
- [x] `core` всегда первый; дальше моды по списку; повтор `defName` / ключа локали — последний победил, warning в лог
|
||||
- [x] Резолв ссылок `ThingDef.actions`, слотов RoomDef после чтения всего набора
|
||||
- [x] Карта-инстанс: двор (TerritoryDef) всегда есть; здания (BuildingDef), этажи (FloorDef + id), помещения, двусторонние рёбра
|
||||
- [x] Валидация: неизвестный def, ребро в никуда, несвязный граф, изолированный узел
|
||||
- [x] Пустая комната допустима; должности для панели — из def узла, если они там есть
|
||||
- [x] Каталог замораживается на работнике при create/load; сейв хранит id модов и раскладку, не развёрнутый каталог
|
||||
- [x] Нет папки мода из сейва — школу не стартовать, файл не удалять, в лог
|
||||
- [x] Обновить ориентир в `AGENTS.md` (куда класть defs)
|
||||
- [x] Наследование: `parent`, `abstract`, замена полей, запрет цикла и чужого вида, abstract нельзя на карту
|
||||
- [x] Патчи из `patches/`: add / replace / remove по JSON Pointer; неизвестный op или нет target — ошибка каталога
|
||||
- [x] Тесты Content: фикстуры JSONC, last-wins, parent/abstract, патч add в actions, связность, пустая комната, одна комната без двора — отказ
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
Reference in New Issue
Block a user