Ejemplo n.º 1
0
        /// <summary>
        /// Получает карту из стека карт
        /// </summary>
        /// <returns></returns>
        public Card GetCard()
        {
            if (QCard.Count == 0)
            {
                string cardFromServer = host.GetRandomCard();

                List <Card> newParametrs = JsonConvert.DeserializeObject <List <Card> >(cardFromServer);

                if (newParametrs.Count == 0)
                {
                    return(null);
                }

                foreach (var item in newParametrs)
                {
                    if (QCard.Count == MaxCard)
                    {
                        break;
                    }
                    QCard.Enqueue(item);
                }
            }

            var returnVal = QCard.Dequeue();

            playCards.Add(returnVal);

            CountCard++;
            return(returnVal);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Получает карту из стека карт
        /// </summary>
        /// <returns></returns>
        private List <Card> GetCard()
        {
            if (Status != CurrentAction.GetPlayerCard && Status != CurrentAction.GetAICard)
            {
                log.Error("Нельзя получить карты при текущем статусе");
                return(null);
            }


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

            if (QCard.Count < MaxCard)
            {
                string cardFromServer = host.GetRandomCard();
                serverCards = JsonConvert.DeserializeObject <List <Card> >(cardFromServer);

                if (serverCards.Count == 0)
                {
                    return(null);
                }

                foreach (var item in serverCards)
                {
                    QCard.Enqueue(item);
                }
            }


            List <Card> returnVal       = new List <Card>();
            int         playerCountCard = 0;

            //если хоти смухлевать с картами для игрока
            if (specialHand.Count > 0)
            {
                foreach (var item in specialHand)
                {
                    if (playerCountCard == MaxCard)
                    {
                        break;
                    }

                    var newCard = serverCards.FirstOrDefault(x => x.id == item);
                    if (newCard != null)
                    {
                        newCard.description = ParseDescription.Parse(newCard.description);
                        returnVal.Add(newCard);
                        playerCountCard++;
                    }
                }

                players[currentPlayer].Cards.AddRange(returnVal);
                specialHand = new List <int>();
                return(returnVal);
            }



            if (players[currentPlayer].Cards != null)
            {
                playerCountCard = players[currentPlayer].Cards.Count;
            }

            while (playerCountCard < MaxCard)
            {
                if (QCard.Count == 0)
                {
                    break;
                }

                var newCard = QCard.Dequeue();
                newCard.description = ParseDescription.Parse(newCard.description);
                returnVal.Add(newCard);
                playerCountCard++;
            }

            players[currentPlayer].Cards.AddRange(returnVal);
            return(returnVal);
        }