Exemple #1
0
        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;
                }
            }
        }
Exemple #2
0
        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("");
        }