Matchup.showdown constructor

Matchup.showdown({
  1. required List<CardPair> playerCardPairs,
  2. required ImmutableCardSet communityCards,
})

Creates a Matchup by evaluating a situation.

Normally you don't need to call this constructor.

Implementation

factory Matchup.showdown({
  required List<CardPair> playerCardPairs,
  required ImmutableCardSet communityCards,
}) {
  assert(playerCardPairs.isNotEmpty);
  assert(communityCards.length == 5);

  final hands = <MadeHand>[];
  final wonPlayerIndexes = <int>{};
  int maxPower = -1;

  for (int i = 0; i < playerCardPairs.length; ++i) {
    final madeHand = MadeHand.best(
      playerCardPairs[i].addedAll(communityCards),
    );

    hands.add(madeHand);

    if (madeHand.power >= maxPower) {
      if (madeHand.power > maxPower) {
        wonPlayerIndexes.clear();

        maxPower = madeHand.power;
      }

      wonPlayerIndexes.add(i);
    }
  }

  return Matchup._(
    communityCards: communityCards,
    playerCardPairs: playerCardPairs,
    hands: hands,
    wonPlayerIndexes: wonPlayerIndexes,
  );
}