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.
ci / server (push) Failing after 3m37s
ci / client (push) Successful in 16s

This commit is contained in:
Leonid Pershin
2026-08-18 13:41:35 +03:00
parent d96b420133
commit bc9a33e67f
9 changed files with 337 additions and 105 deletions
+34
View File
@@ -0,0 +1,34 @@
# Фаза 4. Моды и редактор в create
## Зависимости
- [Фаза 1](01-manager-shell.md)
- [Фаза 3](03-defs-map.md)
## Зачем
Игрок выбирает моды, правит или стирает дефолтную карту, создаёт школу. Внутри школы дерево и
панель локации читают снимок, не заглушки.
## Задачи
- [ ] `GET` списка модов: `core` как обязательный, остальные папки `mods/`
- [ ] `GET` каталога с `?lang=ru|en` (типы + локали) для `core` + выбранных id
- [ ] Hello несёт тот же locale; снимок карты при OpenSchool на этом языке
- [ ] `POST /api/schools` принимает доп. моды и раскладку; сервер всегда подставляет `core` первым и валидирует
- [ ] В диалоге создания: чекбоксы модов (`core` нельзя снять), редактор дерева/связей/слотов или сброс к дефолту
- [ ] При `OpenSchool` — один снимок карты (дерево + локации: имя, предметы, пустые персонажи и действия на месте, должности). Не на каждый клик, не 20 Гц
- [ ] Клиент фильтрует выбранный узел; часы как сейчас
- [ ] Протокол/HTTP описать в `docs/protocol.md` в том же коммите, что кодек
- [ ] Тесты API: create с картой, отказ на дырявый граф, открытие отдаёт снимок
## Критерий готовности
- Создать школу с ванильной картой и с упрощённой своей
- Открыть: дерево кликается, локация показывает имя/предметы/должности, персонажи и действия на месте пустые, события пустые
- Перезапуск сервера поднимает эту школу с той же раскладкой
- `dotnet test` и клиентский `npm test` / `build` проходят
## Стоп
Не приказы «сесть». Не лента событий. Не `OpenLocation` на сервер.