- Update MenuUIViewModel with IMenuRestartSignal dependency and Restart() method
- Add RestartButton to MenuUIView with listener management in Initialize/Release
- Connect MenuUIView click handler to ViewModel.Restart() callback
- Fix race condition in MenuRestartSignal.RequestRestart() by nulling completion source first
- Wrap MenuState.WaitAsync() in try-catch for proper view cleanup on cancellation
- Update TASK-0006 status to Ready
Выполнена задача TASK-0006: реализована кнопка Restart и координация сигналов
- Обновлён MenuUIViewModel с зависимостью IMenuRestartSignal и методом Restart()
- Добавлена кнопка RestartButton в MenuUIView с управлением слушателями в Initialize/Release
- Подключен обработчик кликов MenuUIView к колбэку ViewModel.Restart()
- Исправлено состояние гонки в MenuRestartSignal.RequestRestart() путем обнуления completion source
- Обёрнут WaitAsync в MenuState в try-catch для корректной очистки view при отмене
- Обновлён статус TASK-0006 до Ready
- Create SplashUIViewModel, MenuUIViewModel and LoadingUIViewModel classes implementing IUIViewModel
- Convert UI views to use generic UIView<TVm> pattern for strong typing
- Bind ViewModels in state EnterAsync methods before view initialization
- Add null check validation in UIView.Bind method with ArgumentNullException
- Track initialization state with _isInitialized flag to prevent duplicate Initialize/Release calls
Выполнена задача TASK-0004 и добавлен слой ViewModel:
- Созданы классы SplashUIViewModel, MenuUIViewModel и LoadingUIViewModel с реализацией IUIViewModel
- Преобразованы UI представления для использования общего паттерна UIView<TVm>
- Добавлено связывание ViewModels в методах EnterAsync состояний перед инициализацией вида
- Добавлена проверка на null в методе Bind с выбросом ArgumentNullException
- Добавлен флаг _isInitialized для предотвращения повторных вызовов Initialize/Release
- Add GameLifetimeScope for dependency injection with Zenject
- Implement boot flow service with entry point and interfaces
- Create boot state machine (Splash, Menu, Load states)
- Add UI views for boot screens
- Add common services base class and interface
- Implement generic state machine controller
- Add base UI view components and ViewModel interface
- Update SampleScene.unity
- Add BootSettings asset
Добавлена архитектура bootstrap и общие утилиты для Unity проекта:
- Добавлен GameLifetimeScope для внедрения зависимостей (Zenject)
- Реализован сервис потока загрузки с точкой входа и интерфейсами
- Создана машина состояний загрузки (Splash, Menu, Load состояния)
- Добавлены UI представления для экранов загрузки
- Добавлены базовые классы сервисов и интерфейс IService
- Реализован контроллер машины состояний
- Добавлены базовые компоненты UI вида и интерфейс ViewModel
- Обновлена сцена SampleScene.unity
- Добавлен ассет BootSettings