private void UpdatePlayersHands() { foreach (Player player in CurrentHand.PlayersInvolved) { if (player.IsLocal) { UpdateLocalPlayerHand(player); } else { PlayerHandInfo playerHandInfo = HandChecker.Instance.GetPlayerHandInfo(player.HoleCards, _board.FullBoard); if (playerHandInfo.HandType == HandType.Invalid) { Debug.LogError("UpdatePlayersHands: could not get player hand type."); continue; } player.CurrentHandInfo = playerHandInfo; } } }
public string GetFullHandTypeString(out PlayerHandInfo playerHandInfo, HoleCards holeCards, List <Card> boardCards = null) { HandType handType = HandType.Invalid; Colour handColour = Colour.Invalid; Rank mainRank = Rank.Invalid; Rank secondRank = Rank.Invalid; if (boardCards != null) { handType = EvaluateHand(holeCards, boardCards, out handColour, out mainRank, out secondRank); } else { handType = EvaluateHand(holeCards); } playerHandInfo.HandType = handType; playerHandInfo.HandColour = handColour; playerHandInfo.MainRank = mainRank; playerHandInfo.SecondRank = secondRank; if (handType == HandType.Invalid) { Debug.LogError("GetFullHandTypeString: could not evaluate hand type properly!"); return("ERROR!"); } string handTypeString = GetHandTypeString(handType); if (handType == HandType.HighCard) { if (boardCards == null) { Rank highestRank = GetHighestCardRank(holeCards); string highestRankString = GetRankString(highestRank); return(handTypeString + highestRankString); } else { List <Card> holeAndBoardCards = new List <Card>(); holeAndBoardCards.Add(holeCards.First); holeAndBoardCards.Add(holeCards.Second); holeAndBoardCards.AddRange(boardCards); Rank highestRank = GetHighestCardRank(holeAndBoardCards); string highestRankString = GetRankString(highestRank); return(handTypeString + highestRankString); } } else if (handType == HandType.Pair) { if (boardCards == null) { Rank rank = holeCards.First.Rank; string rankString = GetRankString(rank); return(handTypeString + rankString + "s"); } else { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: one pair - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "s"); } } else if (handType == HandType.TwoPairs) { if (mainRank == Rank.Invalid || secondRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: two pairs - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "s and " + GetRankString(secondRank) + "s"); } else if (handType == HandType.ThreeOfAKind) { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: set - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "s"); } else if (handType == HandType.Straight) { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: straight - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + " high"); } else if (handType == HandType.Flush) { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: flush - invalid rank."); return("ERROR!"); } if (handColour == Colour.Invalid) { Debug.LogError("GetFullHandTypeString: flush - invalid colour."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + " high"); } else if (handType == HandType.FullHouse) { if (mainRank == Rank.Invalid || secondRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: full house - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "s full of " + GetRankString(secondRank) + "s"); } else if (handType == HandType.FourOfAKind) { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: quads - invalid rank."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "s"); } else if (handType == HandType.StraightFlush) { if (mainRank == Rank.Invalid) { Debug.LogError("GetFullHandTypeString: straight flush - invalid rank."); return("ERROR!"); } if (handColour == Colour.Invalid) { Debug.LogError("GetFullHandTypeString: straight flush - invalid colour."); return("ERROR!"); } return(handTypeString + GetRankString(mainRank) + "high"); } else if (handType == HandType.RoyalFlush) { if (handColour == Colour.Invalid) { Debug.LogError("GetFullHandTypeString: royal flush - invalid colour."); return("ERROR!"); } return(handTypeString); } return(""); }