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
37 lines
2.5 KiB
Markdown
37 lines
2.5 KiB
Markdown
# TASK-0001: Composition Root и зависимости
|
||
|
||
## Цель
|
||
|
||
Настроить корневую точку композиции проекта через VContainer так, чтобы orchestration-логика жила в plain C# классах, а MonoBehaviour использовались только как View-компоненты сцены.
|
||
|
||
## Что сделать
|
||
|
||
- Создать `GameLifetimeScope`.
|
||
- Зарегистрировать сервисы и контроллеры через VContainer как managed dependencies.
|
||
- Зарегистрировать `BootstrapEntryPoint` как entry point приложения.
|
||
- Зарегистрировать `BootStatesController` как `IStatesController<BootStateCode>` и при необходимости как self.
|
||
- Зарегистрировать `SplashState`, `LoadState`, `MenuState`.
|
||
- Зарегистрировать scene View через `RegisterComponent(...)`.
|
||
- Зарегистрировать settings asset через `[SerializeField]` и `RegisterInstance(...)`.
|
||
|
||
## Технические требования
|
||
|
||
- Использовать VContainer.
|
||
- Сервисы регистрировать через `builder.Register<Impl>(Lifetime.Singleton).As<IInterface>()`.
|
||
- Не использовать `RegisterInstance(...)` для сервисов и controller-объектов.
|
||
- `RegisterInstance(...)` использовать только для settings/config assets.
|
||
- Не использовать `FindObjectOfType`, `Singleton.Instance` и `static`-хранилища состояния.
|
||
- MonoBehaviour не должны содержать orchestration-логику boot flow.
|
||
|
||
## Критерии готовности
|
||
|
||
- В сцене есть один `GameLifetimeScope`.
|
||
- Все boot flow зависимости собираются через VContainer.
|
||
- View-компоненты подключаются через ссылки из сцены, а не через поиск объектов.
|
||
- Entry point запускается контейнером.
|
||
- Сервисы и state machine не создаются вручную через `new` внутри MonoBehaviour.
|
||
|
||
## Заметки
|
||
|
||
Scene View допустимо регистрировать как компоненты, потому что они физически живут в сцене. Settings asset допустимо регистрировать через `RegisterInstance(...)`, потому что это данные, а не сервис с жизненным циклом.
|