6c46b3043a
- Create 7 new task files (TASK-0001 through TASK-0007) - Add task template file for future use - Update Agent.md with project information - Update TASK.md with task tracking
2.0 KiB
2.0 KiB
TASK-0004: UI база и ViewModel слой
Цель
Создать базовый UI слой, в котором View отвечает только за Unity-ссылки и биндинги, а логика находится во ViewModel или state/flow сервисах.
Что сделать
- Создать
IUIViewModel. - Создать
UIView : MonoBehaviourс методамиInitialize()иRelease(). - Создать
UIView<TVm> : UIView where TVm : IUIViewModel. - Добавить явную привязку ViewModel во View через метод вроде
Bind(TVm vm)илиSetup(TVm vm). - Сделать
Release()идемпотентным для всех View. - Подготовить View для splash, loading и menu экранов.
Технические требования
- ViewModel должна быть обычным C#-классом, не
MonoBehaviour. - Runtime-данные передавать во View явно, а не через DI-поля MonoBehaviour.
- View не должна содержать orchestration-логику boot flow.
- Все подписки и listeners должны сниматься в
Release(). - Повторный вызов
Release()не должен приводить к ошибкам.
Критерии готовности
- Есть базовые классы
UIViewиUIView<TVm>. - ViewModel можно передать во View явно перед
Initialize(). Release()безопасен при повторном вызове.- View не вызывает
FindObjectOfType, не хранит глобальное состояние и не управляет переходами state machine.
Заметки
MonoBehaviour должны оставаться presentation layer. Это соответствует задаче: логика находится в VM или сервисах, View только показывает состояние и прокидывает UI-события.