示例#1
0
    public void DealCardToPlayer(int spreadCardId, int playerCardId, GameModel.Turn turn)
    {
        _commandsSequence.Enqueue(() =>
        {
            Debug.Log("DealCardToPlayer animation targetPlayer " + turn);

            var cardToMove     = FindCardById(_spreadCards, spreadCardId);
            var holderMoveFrom = FindCardHolderByCardId(_spreadCardHolders, spreadCardId);
            if (holderMoveFrom != null)
            {
                holderMoveFrom.DetachCard();
            }
            else
            {
                Debug.LogError("cardHolder is null for spread card id: " + spreadCardId);
            }


            CardHolder holderMoveTo;
            var currenPlayerCardHolders = turn == GameModel.Turn.PLAYER ? _playerCardHolders : _opponentCardHolders;
            var currenPlayerCards       = turn == GameModel.Turn.PLAYER ? _playerCards : _opponentCards;

            if (playerCardId == -1)
            {
                holderMoveTo = GetEmptyHolder(currenPlayerCardHolders);
            }
            else
            {
                holderMoveTo = FindCardHolderByCardId(currenPlayerCardHolders, playerCardId);
            }

            if (holderMoveTo != null && cardToMove != null)
            {
                holderMoveTo.AttachCard(spreadCardId);
                currenPlayerCards.Add(cardToMove);
                _spreadCards.Remove(cardToMove);

                cardToMove.RectTransform.DOMove(holderMoveTo.RectTransform.position, DEAL_DURATION).
                OnComplete(() => {
                    NextCommand();
                });
            }
            else
            {
                if (holderMoveTo == null)
                {
                    Debug.LogError("holderToMove is null for player card id: " + playerCardId);
                }

                if (cardToMove == null)
                {
                    Debug.LogError("cardToMove is null for spread card id: " + spreadCardId);
                }
            }
        });
    }
示例#2
0
 public void ChangeTurn(GameModel.Turn turn)
 {
     _commandsSequence.Enqueue(() =>
     {
     });
 }
示例#3
0
    public void MatchedPlayerCards(Dictionary <GameConfig.MatchType, List <CardVo> > cardsByMatchingType, GameModel.Turn turn)
    {
        _commandsSequence.Enqueue(() =>
        {
            Sequence sequence = DOTween.Sequence();

            var currenPlayerCardHolders = turn == GameModel.Turn.PLAYER ? _playerCardHolders : _opponentCardHolders;
            var currenPlayerCards       = turn == GameModel.Turn.PLAYER ? _playerCards : _opponentCards;
            List <Card> cardsToRemove   = new List <Card>();

            foreach (GameConfig.MatchType matchingType in cardsByMatchingType.Keys)
            {
                var cardsList = cardsByMatchingType[matchingType];

                Sequence scaleUpSequence   = DOTween.Sequence();
                Sequence scaleDownSequence = DOTween.Sequence();

                foreach (CardVo cardVo in cardsList)
                {
                    var cardToAnimate = FindCardById(currenPlayerCards, cardVo.id);

                    if (cardToAnimate)
                    {
                        if (cardsToRemove.IndexOf(cardToAnimate) == -1)
                        {
                            cardsToRemove.Add(cardToAnimate);
                        }

                        scaleUpSequence.Join(cardToAnimate.RectTransform.DOScale(new Vector3(1.1f, 1.5f, 1), 0.3f));
                        scaleDownSequence.Join(cardToAnimate.RectTransform.DOScale(Vector3.one, 0.2f));
                    }
                    else
                    {
                        Debug.LogError("cand find card for id " + cardVo.id + "  for target " + turn);
                    }
                }

                sequence.Append(scaleUpSequence);
                sequence.Append(scaleDownSequence);
            }

            Sequence scaleToZeroSequence = DOTween.Sequence();
            foreach (Card card in cardsToRemove)
            {
                currenPlayerCards.Remove(card);
                scaleToZeroSequence.Join(card.RectTransform.DOScale(new Vector3(0f, 0f, 1), 0.2f).OnComplete(() =>
                {
                    DestroyCard(card);
                }));
            }

            sequence.Append(scaleToZeroSequence);
            sequence.OnComplete(() =>
            {
                NextCommand();
            });
        });
    }
示例#4
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();
        }
    }
 public void ChangeTurn(GameModel.Turn turn)
 {
 }
 public void MatchedPlayerCards(Dictionary <GameConfig.MatchType, List <CardVo> > cards, GameModel.Turn turn)
 {
     _gameScreen.MatchedPlayerCards(cards, turn);
 }
 public void MoveCardFromPlayerToCommonDeck(int playerCardId, int commonDeckCardId, GameModel.Turn turn)
 {
     _gameScreen.MoveCardFromPlayerToCommonDeck(playerCardId, commonDeckCardId, turn);
 }
 public void DealCardToPlayer(int spreadCardId, int playerCardId, GameModel.Turn turn)
 {
     _gameScreen.DealCardToPlayer(spreadCardId, playerCardId, turn);
 }