Ejemplo n.º 1
0
    public void MoveCard(int cardIndex, CardHolder other, out TweenHolder outTween, bool?visibleDuringTween, int indexToInsertAt = -1)
    {
        CardController cardBeingMoved = _Cards[cardIndex];

        _Cards.RemoveAt(cardIndex);
        if (!other._Cards.InsertionIndexIsValid(indexToInsertAt))
        {
            indexToInsertAt = other._Cards.Count;
        }
        other.AddCard(cardBeingMoved, indexToInsertAt);

        cardBeingMoved.ViewFSM.SetAnimState(other._cardsAnimState, performTweens: false);
        cardBeingMoved.ViewFSM.SetTextVisibility(visibleDuringTween ?? other._cardsTextVisibility);

        outTween = cardBeingMoved.AddOffsetHeightTween(_cardAnimationData.GeneralCardMoveHeight,
                                                       other.GetFinalPositionOfCardAtIndex(indexToInsertAt), true)
                   .AddLocalRotationTween(Vector3.one * 360.0f + cardBeingMoved.ViewFSM.GetAnimRotationOffset())
                   .AddIncrementalScaleTween(cardBeingMoved.ViewFSM.GetAnimScale())
                   .SetDuration(_cardAnimationData.GeneralCardMoveDuration)
                   .SetShouldChangeLayer(true)
                   .AddToOnFinishedOnce(() => other.OnCardRecieveTweenFinished(cardBeingMoved));

        OnCardSent(cardBeingMoved);
        other.OnCardRecieveTweenBegan(cardBeingMoved);

        if (CardFlipAudio != null)
        {
            CardFlipAudio.Play();
        }
    }
Ejemplo n.º 2
0
    public void ReShuffle(int[] unShuffleData, Action onFinished)
    {
        var shuffleAnimationWaiter = new FinishableGroupWaiter(onFinished);
        var reShuffledCards        = new CardController[unShuffleData.Length];

        for (int i = 0, iMax = unShuffleData.Length; i < iMax; ++i)
        {
            CardController lastCard = reShuffledCards[i] = _Cards[unShuffleData[i]];

            lastCard.ViewFSM.SetTextVisibility(true);

            AnimateShuffle(lastCard, i);

            shuffleAnimationWaiter.AddFinishable(lastCard.Holder);
        }

        if (_shuffleAnimationCamera != null && _shuffleAnimationOriginPoint != null)
        {
            shuffleAnimationWaiter.AddFinishable(
                _shuffleAnimationCamera.AddPositionPingPongTween(_shuffleAnimationCamera.transform.position + Vector3.up * _CardAnimationData.CameraShuffleTweenUpAmount)
                .SetDuration(_CardAnimationData.DeckShuffleExplosionDuration));
        }

        _Cards.Clear();
        _Cards.AddRange(reShuffledCards);
        shuffleAnimationWaiter.Ready = true;

        if (CardFlipAudio != null)
        {
            CardFlipAudio.PlayOneShot(_cardShuffleClip);
            StartCoroutine(PlayCardRuffleClip());
        }
    }
Ejemplo n.º 3
0
    public void Shuffle(out int[] unShuffleData, Action onFinished)
    {
        var cardsToShuffleFrom = new List <CardController>(_Cards);
        var cardsToShuffleTo   = new List <CardController>(_Cards.Count);

        unShuffleData = new int[_Cards.Count];
        var shuffleAnimationWaiter = new FinishableGroupWaiter(onFinished);

        for (int i = 0; cardsToShuffleFrom.Count > 0; ++i)
        {
            int index = Mathf.RoundToInt(UnityEngine.Random.value * (cardsToShuffleFrom.Count - 1));
            cardsToShuffleTo.Add(cardsToShuffleFrom[index]);
            cardsToShuffleFrom.RemoveAt(index);
            unShuffleData[i] = _Cards.IndexOf(cardsToShuffleTo.Last());

            CardController lastCard = cardsToShuffleTo.Last();

            lastCard.ViewFSM.SetTextVisibility(true);

            AnimateShuffle(lastCard, i);

            shuffleAnimationWaiter.AddFinishable(lastCard.Holder);
        }

        if (ShuffleAnimationCamera != null && _shuffleAnimationOriginPoint != null)
        {
            shuffleAnimationWaiter.AddFinishable(
                _shuffleAnimationCamera.AddPositionPingPongTween(_shuffleAnimationCamera.transform.position + Vector3.up * _CardAnimationData.CameraShuffleTweenUpAmount)
                .SetDuration(_CardAnimationData.DeckShuffleExplosionDuration));
        }

        _Cards.Clear();
        _Cards.AddRange(cardsToShuffleTo);
        shuffleAnimationWaiter.Ready = true;

        if (CardFlipAudio != null)
        {
            CardFlipAudio.PlayOneShot(_cardShuffleClip);
            StartCoroutine(PlayCardRuffleClip());
        }
    }
Ejemplo n.º 4
0
    public void IntroduceCard(CardController cardToIntroduce, out TweenHolder outTween,
                              bool fancyEntrance = false, float angleOffsetForFancyEntrance = 0.0f)
    {
        outTween = null;
        AddCard(cardToIntroduce);
        cardToIntroduce.ViewFSM.SetAnimState(_cardsAnimState, performTweens: false);

        if (fancyEntrance)
        {
            float cardCreationRadius = _cardAnimationData.DeckFillFancyIntroCardSpawnDistance;
            float rightDistance      = cardCreationRadius * Mathf.Cos(angleOffsetForFancyEntrance);
            float forwardDistance    = cardCreationRadius * Mathf.Sin(angleOffsetForFancyEntrance);

            cardToIntroduce.transform.position = transform.position
                                                 + Vector3.right * rightDistance
                                                 + Vector3.forward * forwardDistance;

            outTween = cardToIntroduce.AddOffsetHeightTween(_cardAnimationData.DeckFillFancyIntroTweenHeight,
                                                            GetCardPositionAtIndex(_Cards.LastIndex()), true)
                       .AddLocalRotationTween(360.0f * Vector3.one + cardToIntroduce.ViewFSM.GetAnimRotationOffset())
                       .SetDuration(_cardAnimationData.DeckFillDurationPerCard)
                       .SetShouldChangeLayer(true)
                       .AddToOnFinishedOnce(() => OnCardRecieveTweenFinished(cardToIntroduce));

            OnCardRecieveTweenBegan(cardToIntroduce);
        }
        else
        {
            cardToIntroduce.transform.ResetLocal();
        }

        if (CardFlipAudio != null)
        {
            CardFlipAudio.Play();
        }
    }
Ejemplo n.º 5
0
    private IEnumerator PlayCardRuffleClip()
    {
        yield return(new WaitForSeconds(Mathf.Max(0.0f, _CardAnimationData.DeckShuffleExplosionDuration - _cardRuffleClip.length)));

        CardFlipAudio.PlayOneShot(_cardRuffleClip);
    }