- using System;
- using System.Threading;
- using Cysharp.Threading.Tasks;
- using Features.Collectibles.Album.Providers.Infrastructure;
- using Features.Collectibles.Badge.ViewModels.Infrastructure;
- using Features.Collectibles.PacksOpening.ViewModels.Infrastructure;
- using Playtika.Unity.ControllerTree;
- namespace Features.Collectibles.PacksOpening.Controllers
- {
- public abstract class AlbumNewCardsAnimationBaseController : Controller
- {
- protected readonly IAlbumBadgeViewModel AlbumBadgeViewModel;
- private readonly TimeSpan _secondsBeforeAnimationStart = TimeSpan.FromSeconds(1f);
- private readonly IAlbumPackDetailsViewModel _albumPackDetailsViewModel;
- private readonly IAlbumPlayerDataProvider _albumPlayerDataProvider;
- protected AlbumNewCardsAnimationBaseController(
- IAlbumBadgeViewModel albumBadgeViewModel,
- IAlbumPackDetailsViewModel albumPackDetailsViewModel,
- IAlbumPlayerDataProvider albumPlayerDataProvider)
- {
- AlbumBadgeViewModel = albumBadgeViewModel;
- _albumPackDetailsViewModel = albumPackDetailsViewModel;
- _albumPlayerDataProvider = albumPlayerDataProvider;
- }
- protected sealed override UniTask OnInitialize(CancellationToken token)
- {
- return UniTask.CompletedTask;
- }
- protected sealed override async UniTask Running(CancellationToken token)
- {
- await UniTask.Delay(_secondsBeforeAnimationStart, cancellationToken: token);
- await ShowBadge(token);
- await RunFlyingAnimation(token);
- await HideBadge(token);
- _albumPlayerDataProvider.SetHasAlbumUpdates(true);
- }
- protected abstract UniTask ShowBadge(CancellationToken token);
- protected abstract UniTask HideBadge(CancellationToken token);
- private UniTask RunFlyingAnimation(CancellationToken token)
- {
- var badgePosition = AlbumBadgeViewModel.BadgeTransform.position;
- return UniTask.WhenAll(
- _albumPackDetailsViewModel.PlayCardsFlyAnimations(badgePosition, token),
- AlbumBadgeViewModel.PlayFlippingAnimation(token)
- );
- }
- }
- }
[text] S
Viewer
Editor
You can edit this paste and save as new: