public async Task <CardDrawnResponse> Delete(string deckId, CardDrawRequest request) { int count = request.Count.HasValue ? request.Count.Value : 1; var deck = await repository.DrawCardsAsync(deckId, count); var drawnCards = deck.Cards .Where(c => c.Drawn) .Reverse() .Take(count) .Reverse() .Select(c => new CardInfo() { Code = c.Code, Suit = c.Suit, Value = c.Value }) .ToList(); var response = new CardDrawnResponse() { DeckId = deck.DeckId, Remaining = deck.Cards.Where(card => !card.Drawn).Count(), Removed = drawnCards }; return(response); }
internal void DrawCard(bool isFromDiscardFile) { isCardDrawn = true; CardDrawRequest request = new CardDrawRequest { user_id = int.Parse(GameVariables.userId), room_id = roomId, is_from_discard_pile = isFromDiscardFile, }; SocketConnectionManager.GetInstance.SendSocketRequest(GameVariables.SocketRequestType.cardDraw, request); }
async public Task <CardDrawnResponse> Delete(string deckId, CardDrawRequest request) { int drawCount = request.Count.HasValue ? request.Count.Value : 1; Deck deck = await _repository.DrawCardsAsync(deckId, drawCount); List <CardInfo> cards = deck.Cards .Where(x => x.Drawn) .Reverse() .Take(drawCount) .Reverse() .Select(x => new CardInfo { Suit = x.Suit, Value = x.Value, Code = x.Code }) .ToList(); return(new CardDrawnResponse { DeckId = deckId, Remaining = deck.Cards.Where(x => !x.Drawn).Count(), Removed = cards, }); }