public static bool DoesPlayerOneWin(Match match) { HandRating playerOneHandRating = GetHandRating(match.PlayerOneHand); HandRating playerTwoHandRating = GetHandRating(match.PlayerTwoHand); if (playerOneHandRating > playerTwoHandRating) { return(true); } else if (playerOneHandRating < playerTwoHandRating) { return(false); } return(TieBreaker( playerOneHandRating, match.PlayerOneHand, match.PlayerTwoHand)); }
private static bool TieBreaker( HandRating handRating, Hand playerOneHand, Hand playerTwoHand) { switch (handRating) { case HandRating.RoyalFlush: return(true); case HandRating.StraightFlush: return(TieBreakStraightFlush(playerOneHand, playerTwoHand)); case HandRating.FourOfAKind: return(TieBreakFourOfAKind(playerOneHand, playerTwoHand)); case HandRating.FullHouse: return(TieBreakFullHouse(playerOneHand, playerTwoHand)); case HandRating.Flush: return(TieBreakFlush(playerOneHand, playerTwoHand)); case HandRating.Straight: return(TieBreakStraight(playerOneHand, playerTwoHand)); case HandRating.ThreeOfAKind: return(TieBreakThreeOfAKind(playerOneHand, playerTwoHand)); case HandRating.TwoPair: return(TieBreakTwoPair(playerOneHand, playerTwoHand)); case HandRating.OnePair: return(TieBreakOnePair(playerOneHand, playerTwoHand)); default: return(TieBreakHighCard(playerOneHand, playerTwoHand)); } }