示例#1
0
        public async Task <List <CardInHandModel> > GetCardHandModelListForPlayer(int userId, bool allCards, int trump)
        {
            List <CardInHandModel> listOfCards = new List <CardInHandModel>();
            var player = await _playerRepository.GetPlayerByUserIdAsync(userId);

            if (string.IsNullOrEmpty(player.Hand))
            {
                return(listOfCards);
            }

            var cards = CardsManager.GetCardListFromHandString(player.Hand);

            if (allCards)
            {
                cards = cards.OrderCards();
                var trumpSuit       = (CardSuit)trump;
                var belaAvailable   = cards.Exists(c => c.Value == CardValue.King && c.Suit == trumpSuit) && cards.Exists(c => c.Value == CardValue.Queen && c.Suit == trumpSuit);
                var trumpSuitString = trumpSuit.GetStringValue();
                listOfCards = cards
                              .Select(c => new CardInHandModel()
                {
                    CardString = c.ToString(),
                    CardUrl    = c.ImgPath,
                    AskForBela = belaAvailable && c.Suit == trumpSuit && (c.Value == CardValue.Queen || c.Value == CardValue.King)
                }).ToList();
            }
            else
            {
                var firstSix = cards.Take(6).ToList().OrderCards();
                listOfCards = firstSix
                              .Select(c => new CardInHandModel()
                {
                    CardString = c.ToString(),
                    CardUrl    = c.ImgPath,
                    AskForBela = false
                }).ToList();
                listOfCards.Add(new CardInHandModel()
                {
                    CardString = "", CardUrl = CardsManager.GetBackgroundCardImgPath()
                });
                listOfCards.Add(new CardInHandModel()
                {
                    CardString = "", CardUrl = CardsManager.GetBackgroundCardImgPath()
                });
            }

            return(listOfCards);
        }