/// <inheritdoc /> public override IEnumerable <PlayerHandChallengedCards> GetChallengers(IEnumerable <PlayerHand> allPlayerHands) { var challengers = new List <PlayerHandChallengedCards>(); foreach (var playerhand in allPlayerHands) { var challengedCards = playerhand.Hand .GroupBy(p => p.Suit) .Where(gSuits => gSuits.Count() >= ShowdownSettings.FlushHandCount) .SelectMany(g => g.AsEnumerable()); if (challengedCards.Any()) { var playerHandChallenged = new PlayerHandChallengedCards(playerhand) { ChallengedCards = challengedCards }; challengers.Add(playerHandChallenged); } } if (challengers.Any()) { _logger?.LogDebug("Challengers detected. Challengers: {0}", string.Join(",", challengers.Select(x => x.PlayerHand.PlayerInfo.Name))); } return(challengers); }
private void AddPlayerAsChallenger(PlayerHand playerhand, List <PlayerHandChallengedCards> currentChallengerList, List <IGrouping <int, Card> > challengedCardsWithPair) { var challengedCards = challengedCardsWithPair.SelectMany(g => g.Where(x => g.Key == x.Value)).ToList(); var playerHandChallenged = new PlayerHandChallengedCards(playerhand) { ChallengedCards = challengedCards }; currentChallengerList.Add(playerHandChallenged); }