private IEnumerator SpellPreviewAnimation(IContainer container, GameAction action) { var playCardAction = (PlayCardAction)action; var cardView = _gameView.FindCardView(playCardAction.Card); //_gameView.ChangeZoneView(cardView, Zones.Discard, from: Zones.Hand); yield return(true); //NOTE: Moves the card out of the Hand Zone var previewSequence = _boardView.GetRevealSequence(cardView, Zones.Discard, Zones.Hand); while (previewSequence.IsPlaying()) { yield return(null); } }
private IEnumerator ShuffleDeckAnimation(IContainer container, GameAction action) { yield return(true); var shuffleAction = (ShuffleDeckAction)action; var sequence = DOTween.Sequence().AppendInterval(0.5f).AppendInterval(0f); foreach (var target in shuffleAction.Targets) { var cardViews = _gameView.FindCardViews(target.Deck); for (var i = 0; i < cardViews.Count; i++) { var cardView = cardViews[i]; var offsetX = i % 2 == 1 ? 6f : -6f; var offsetZ = -2f; var offsetPos = cardView.transform.position + offsetX * Vector3.right + offsetZ * Vector3.forward; var leftOffsetRot = new Vector3(5.5f, 16f, -6); var rightOffsetRot = new Vector3(5.5f, -16f, 6); var targetRot = offsetX < 0f ? leftOffsetRot : rightOffsetRot; if (target == _gameView.Match.EnemyPlayer) { targetRot.z += 180f; } sequence.Join(cardView.Move(offsetPos, targetRot, 0.6f)); } } while (sequence.IsPlaying()) { yield return(null); } sequence = DOTween.Sequence(); foreach (var target in shuffleAction.Targets) { var zoneView = _gameView.FindZoneView(target, Zones.Deck); var targetRot = zoneView.GetRotation(); var startDelay = 0f; for (var i = 0; i < target.Deck.Count; i++) { var card = target.Deck[i]; var cardView = _gameView.FindCardView(card); var finalPos = zoneView.GetPosition(i); sequence.Join(cardView.Move(finalPos, targetRot, 0.3f, startDelay)); startDelay += i % 2 == 1 ? 0.05f : 0f; } } while (sequence.IsPlaying()) { yield return(null); } }