Files
QuizPlease/Agent/Task/TASK-0005.md
T
horooko 6c46b3043a feat: add agent tasks and update documentation
- 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
2026-05-27 03:36:25 +07:00

2.4 KiB
Raw Blame History

TASK-0005: SplashState, LoadState и прогресс

Цель

Реализовать splash и loading состояния с настоящей отменой async-операций и реактивным прогрессом через UniRx.

Что сделать

  • Реализовать SplashState.
  • В SplashState.EnterAsync показать splash View и подождать 1 секунду через UniTask.Delay(..., cancellationToken: ct).
  • В SplashState.ExitAsync скрыть или release-нуть splash View.
  • Реализовать LoadState.
  • В LoadState создать реактивный прогресс от 0 до 1 через UniRx.
  • Наружу отдавать progress как read-only значение или read-only интерфейс.
  • В LoadState.EnterAsync сбрасывать progress в 0f.
  • Выполнить 5 шагов загрузки по 200 мс с обновлениями 0.2f, 0.4f, 0.6f, 0.8f, 1f.
  • Реализовать LoadingUIView, подписанный на progress.

Технические требования

  • Использовать UniTask и CancellationToken во всех delay.
  • Использовать UniRx для progress и подписок.
  • Подписки хранить в CompositeDisposable и очищать в Release().
  • LoadingUIView не должна менять progress, только читать его.
  • Не обновлять progress UI через Update().
  • При использовании tween/lerp останавливать предыдущую визуализацию перед запуском новой.

Критерии готовности

  • SplashState отменяется через внешний CancellationToken.
  • LoadState выставляет ожидаемую последовательность progress значений.
  • LoadingUIView корректно обновляет progress bar.
  • При выходе из LoadState подписки очищаются.
  • Повторный вход в LoadState не создает дублирующихся подписок и не вызывает NullReferenceException.

Заметки

В этом проекте важнее чистый lifecycle и гигиена подписок, чем сложная анимация progress bar. Достаточно прямого обновления или простого lerp.