# QuizPleaseTest Boot Flow

Unity-проект с загрузочным flow через собственную state machine, VContainer, UniTask и UniRx.

## Версия и пакеты

- Unity: `2022.3.62f3`
- Стартовая сцена: `Assets/Scenes/SampleScene.unity`
- DI: `VContainer`
- Async: `UniTask`
- Reactive: `UniRx`
- UI: `uGUI`, `TextMeshPro`

## Как запустить

1. Открыть проект в Unity `2022.3.62f3` или совместимой Unity 2022 LTS.
2. Открыть сцену `Assets/Scenes/SampleScene.unity`.
3. Убедиться, что на сцене есть `GameLifetimeScope`, `Canvas`, `EventSystem`, `Text (Data_Status)` и `Slider`.
4. Нажать `Play`.

## Как проверить сценарий

1. После старта статус должен стать `Splash`.
2. Затем должен начаться этап `Loading 0%`.
3. Во время загрузки статус должен обновляться до `Loading 100%`.
4. `Slider` должен двигаться от `0` к `1`.
5. После загрузки статус должен стать `Menu`.
6. Нажать кнопку `Restart`.
7. После нажатия должен снова выполниться цикл `Loading -> Menu`.
8. При остановке Play Mode на `Menu` не должно быть `MissingReferenceException`.

Фактически потраченное время: 1 час 40 минут + 20 минут на написание текста

Дополнительно можно изменить BootSettings для проверки.

## Что бы я доделал, будь еще 2 часа

- Добавил бы Unit/Edit Mode тесты для быстрой проверки state machine, restart-сигнала и порядка `Exit -> Enter`, с комментариями к сценариям.
- Настроил бы workflow для автобилдов, чтобы на каждый push проверялись компиляция и базовый build.
- Добавил бы отдельный build-скрипт, который можно запускать локально и в CI одной командой.
- Добавил бы tween-анимации для появления экранов и progress bar. В идеале сделал бы свои простые tweeners под задачу, а не тянул лишнюю абстракцию (и плагины).
- Вынес бы тексты статусов в settings/localization-ready слой, чтобы не держать строки внутри states.
- Добавил бы нормальный визуальный layout для Splash, Loading и Menu вместо минимального UI. Вероятно на основе готового ассета, для экономии времени.
- Добавил бы Play Mode тест полного цикла `Splash -> Load -> Menu -> Restart -> Load`.
- Добавил бы обработку ошибок загрузки и отдельное error-state поведение.
- Нормально собрал в Prefab экраны и вынес бы текст как отдельный префаб, чтобы можно было по всему проекту быстро менять шрифт.
