예제 #1
0
    public void MoveCardFromPlayerToCommonDeck(int playerCardId, int commonDeckCardId, GameModel.Turn turn)
    {
        _commandsSequence.Enqueue(() =>
        {
            List <Card> currentPlayerDeck = turn == GameModel.Turn.PLAYER ? _playerCards : _opponentCards;
            Card cardToMove = FindCardById(currentPlayerDeck, playerCardId);

            if (cardToMove == null)
            {
                Debug.LogError("can't move card from current player: " + turn + "  card id: " + playerCardId
                               + "  no such card in player deck");
            }
            else
            {
                CardHolder holderDestination = FindCardHolderByCardId(_commonDeckCardHolders, commonDeckCardId);
                if (holderDestination == null)
                {
                    Debug.LogError("can't move card to common deck - no such card with id:  " + commonDeckCardId);
                }
                else
                {
                    holderDestination.DetachCard();

                    Sequence sequence = DOTween.Sequence();
                    Card cardToRemoveFromCommonDeck = FindCardById(_commonDeckCards, commonDeckCardId);

                    sequence.Append(cardToMove.RectTransform.DOMove(holderDestination.RectTransform.position, 1));

                    sequence.Append(cardToMove.RectTransform.DOScale(Vector3.zero, 0.1f));
                    sequence.Join(cardToRemoveFromCommonDeck.RectTransform.DOScale(Vector3.zero, 0.1f));

                    sequence.OnComplete(() =>
                    {
                        _commonDeckCards.Remove(cardToRemoveFromCommonDeck);
                        DestroyCard(cardToRemoveFromCommonDeck);
                        DestroyCard(cardToMove);
                        NextCommand();
                    });
                }
            }
        });

        if (_currentCommand == null && _commandsSequence.Count > 0)
        {
            NextCommand();
        }
    }