示例#1
0
文件: Player.cs 项目: unix14/ShitHead
        public void SendStackCardsToPlayer(Player receivingPlayer, CardAnimator cardAnimator, List <byte> cardValues, bool isLocalPlayer)
        {
            List <Card> StackCards = cardAnimator.getStack();
            int         playerDisplayingCardsCount = StackCards.Count;

            if (playerDisplayingCardsCount < cardValues.Count)
            {
                Debug.LogError("Not enough stack cards");
                return;
            }

            for (int index = 0; index < cardValues.Count; index++)
            {
                Card card      = null;
                byte cardValue = cardValues[index];

                if (isLocalPlayer)
                {
                    foreach (Card c in StackCards)
                    {
                        if (c.Rank == Card.GetRank(cardValue) && c.Suit == Card.GetSuit(cardValue))
                        {
                            card = c;
                            break;
                        }
                    }
                }
                else
                {
                    card = StackCards[playerDisplayingCardsCount - 1 - index];
                    card.SetCardValue(cardValue);
                    card.SetFaceUp(true);
                }

                if (card != null)
                {
                    card.isInStack   = false;
                    card.isTouchable = true;

                    receivingPlayer.ReceiveDisplayingCard(card);
                    cardAnimator.AddCardAnimation(card, receivingPlayer.NextCardPosition(), index);

                    if (isLocalPlayer)
                    {
                        NumberOfDisplayingCards++;
                    }
                    else
                    {
                        receivingPlayer.NumberOfDisplayingCards++;
                    }
                }
                else
                {
                    Debug.LogError("Unable to find stack card.");
                }
            }
            cardAnimator.clearStack();
            RepositionDisplayingCards(cardAnimator);
        }
示例#2
0
        public Card DropFirstCard(byte value)
        {
            int numberOfDisplayingCard = DisplayingCards.Count;

            if (numberOfDisplayingCard > 0)
            {
                Card card = DisplayingCards[numberOfDisplayingCard - 1];
                card.SetCardValue(value);
                DropCardAnimation(card, 1);
                DisplayingCards.Remove(card);
                return(card);
            }
            return(null);
        }
示例#3
0
文件: Player.cs 项目: unix14/ShitHead
        public void SendDisplayingCardToPlayer(Player receivingPlayer, CardAnimator cardAnimator, List <byte> cardValues, bool isLocalPlayer)
        {
            int playerDisplayingCardsCount = DisplayingCards.Count;

            if (playerDisplayingCardsCount < cardValues.Count)
            {
                Debug.LogError("Not enough displaying cards");
                return;
            }

            for (int index = 0; index < cardValues.Count; index++)
            {
                Card card      = null;
                byte cardValue = cardValues[index];

                if (isLocalPlayer)
                {
                    foreach (Card c in DisplayingCards)
                    {
                        if (c.Rank == Card.GetRank(cardValue) && c.Suit == Card.GetSuit(cardValue))
                        {
                            card = c;
                            break;
                        }
                    }
                }
                else
                {
                    card = DisplayingCards[playerDisplayingCardsCount - 1 - index];
                    card.SetCardValue(cardValue);
                    card.SetFaceUp(true);
                }

                if (card != null)
                {
                    Debug.Log("DisplayingCards.Remove(card) " + card);

                    DisplayingCards.Remove(card);
                    receivingPlayer.ReceiveDisplayingCard(card);
                    cardAnimator.AddCardAnimation(card, receivingPlayer.NextCardPosition());
                    NumberOfDisplayingCards--;
                }
                else
                {
                    Debug.LogError("Unable to find displaying card.");
                }
            }

            RepositionDisplayingCards(cardAnimator);
        }
示例#4
0
        public void DrawDisplayingCard(Player player, byte value)
        {
            int numberOfDisplayingCard = DisplayingCards.Count;

            if (numberOfDisplayingCard > 0)
            {
                Card card = DisplayingCards[numberOfDisplayingCard - 1];
                card.SetCardValue(value);
                card.SetFaceUp(true);
                player.ReceiveDisplayingCard(card);
                AddCardAnimation(card, player.NextCardPosition());

                DisplayingCards.Remove(card);
            }
        }
示例#5
0
        public void SetCardValues(List <byte> values)
        {
            if (DisplayingCards.Count != values.Count)
            {
                Debug.LogError($"Displaying cards count {DisplayingCards.Count} is not equal to card values count {values.Count} for {PlayerId}");
                return;
            }

            for (int index = 0; index < values.Count; index++)
            {
                Card card = DisplayingCards[index];
                card.SetCardValue(values[index]);
                card.SetDisplayingOrder(index);
            }
        }
        public void DrawBurnCard(byte value)
        {
            BurnCardValues = new List <Card>();
            //int numberOfBurnedCards = BurnCardValues.Count;

            GameObject newGameObject = Instantiate(CardPrefab, BurnPosition, Quaternion.identity);

            newGameObject.transform.parent = transform;
            Card card = newGameObject.GetComponent <Card>();

            //card.SetDisplayingOrder(0);
            card.transform.position = BurnPosition;

            card.SetCardValue(value);
            card.SetFaceUp(false); //we want face down
            //player.ReceiveDisplayingCard(card);
            AddCardAnimation(card, BurnPosition);
        }
示例#7
0
文件: Player.cs 项目: unix14/ShitHead
        public void CreateBottomBook(byte cardValue, CardAnimator cardAnimator, int index)
        {
            Vector2 targetPosition = GetBookPositionByIndex(index);
            Card    card           = cardAnimator.TakeFirstDisplayingCard();

            card.SetCardValue(cardValue);
            card.SetDisplayingOrder(-1);
            card.OwnerId = PlayerId;
            card.SetFaceUp(false);
            card.isTouchable = false;

            float      randomRotation = UnityEngine.Random.Range(-1 * Constants.BOOK_MAX_RANDOM_ROTATION, Constants.BOOK_MAX_RANDOM_ROTATION);
            Quaternion rotation       = Quaternion.Euler(Vector3.forward * randomRotation);

            cardAnimator.AddCardAnimation(card, targetPosition, rotation);
            HiddenBooks.Add(card);
            NumberOfHiddenBooks++;
        }
示例#8
0
        public void RestoreBook(Ranks rank, CardAnimator cardAnimator)
        {
            Vector2 targetPosition = NextBookPosition();

            for (int i = 0; i < 4; i++)
            {
                Card card = cardAnimator.TakeFirstDisplayingCard();

                int intRankValue = (int)rank;
                int cardValue    = (intRankValue - 1) * 4 + i;

                card.SetCardValue((byte)cardValue);
                card.SetFaceUp(true);
                float randomRotation = UnityEngine.Random.Range(-1 * Constants.BOOK_MAX_RANDOM_ROTATION, Constants.BOOK_MAX_RANDOM_ROTATION);
                card.transform.position = targetPosition;
                card.transform.rotation = Quaternion.Euler(Vector3.forward * randomRotation);
            }

            numberOfBooks++;
        }
示例#9
0
        public Card DropCardFromPlayer(CardAnimator cardAnimator, byte cardValue, bool isLocalPlayer)
        {
            int playerDisplayingCardsCount = DisplayingCards.Count;

            Card card = null;

            if (isLocalPlayer)
            {
                foreach (Card c in DisplayingCards)
                {
                    if (c.Rank == Card.GetRank(cardValue) && c.Suit == Card.GetSuit(cardValue))
                    {
                        card = c;
                        break;
                    }
                }
            }
            else
            {
                //computer di rasesatppudu ra
                card = DisplayingCards[playerDisplayingCardsCount - 1];
                card.SetCardValue(cardValue);
                card.SetFaceUp(true);
            }

            if (card != null)
            {
                DisplayingCards.Remove(card);
                //cardAnimator.AddCardAnimation(card, receivingPlayer.NextCardPosition());
                NumberOfDisplayingCards--;
            }
            else
            {
                Debug.LogError("Unable to find displaying card.");
            }
            RepositionDisplayingCards(cardAnimator);

            return(card);
        }
示例#10
0
文件: Player.cs 项目: unix14/ShitHead
        public void CreateTopBook(byte rank, CardAnimator cardAnimator, int index)
        {
            Vector2 targetPosition = GetBookPositionByIndex(index);

            Card card = cardAnimator.TakeFirstDisplayingCard();

            //card.Suit = (Suits)UnityEngine.Random.Range(0, 3);
            //card.Rank = rank;

            card.SetCardValue(rank);

            card.SetDisplayingOrder(0);
            card.OwnerId = PlayerId;
            //card.SetFaceUp(true);
            card.isTouchable = false;

            float      randomRotation = UnityEngine.Random.Range(-1 * Constants.BOOK_MAX_RANDOM_ROTATION, Constants.BOOK_MAX_RANDOM_ROTATION);
            Quaternion rotation       = Quaternion.Euler(Vector3.forward * randomRotation);

            cardAnimator.AddCardAnimation(card, targetPosition, rotation);
            DisplayingBooks.Add(card);

            NumberOfBooks++;
        }
示例#11
0
文件: Player.cs 项目: unix14/ShitHead
        public string SendDisplayingCardToStack(CardAnimator cardAnimator, List <byte> cardValues, bool isLocalPlayer)
        {
            string result = "";

            List <Card> allPossibleCards = new List <Card>();

            allPossibleCards.AddRange(DisplayingCards);

            if (DisplayingCards.Count == 0 && isFinishedHandCards())
            {
                allPossibleCards.AddRange(DisplayingBooks);
                foreach (Card card in DisplayingBooks)
                {
                    card.isTouchable = true;
                }
            }
            else
            {
                foreach (Card card in DisplayingBooks)
                {
                    card.isTouchable = false;
                }
            }
            if (DisplayingBooks.Count == 0 && allPossibleCards.Count == 0 && isFinishedDisplayingBooks())
            {
                allPossibleCards.AddRange(HiddenBooks);
                foreach (Card card in HiddenBooks)
                {
                    card.isTouchable = true;
                }
            }
            else
            {
                foreach (Card card in HiddenBooks)
                {
                    card.isTouchable = false;
                }
            }

            for (int i = 0; i < cardValues.Count; i++)
            {
                byte cardValue = cardValues[i];
                Card card      = null;

                if (isLocalPlayer)
                {
                    foreach (Card c in allPossibleCards)
                    {
                        if ((c.Rank == Card.GetRank(cardValue) && c.Suit == Card.GetSuit(cardValue)) || isFinishedDisplayingBooks())
                        {
                            card = c;
                            card.SetCardValue(cardValue);
                            break;
                        }
                    }
                }
                else
                {
                    card = allPossibleCards[i];           //[i] ??
                    card.SetCardValue(cardValue);
                    //result = false;
                }

                result = isCardOkToThrow(cardAnimator, card);
            }
            return(result);
        }