public Playability GetPlayabilityStatus(CardPlayerData cpd)
        {
            if (!cpd.HasUser)
            {
                return(Playability.NoPlayer);
            }
            int scrapAmount = cpd.GetScrapAmount();

            if (cpd.HasUserInGame)
            {
                if (scrapAmount <= 0)
                {
                    return(Playability.RanOutOfScrap);
                }
            }
            else
            {
                if (scrapAmount < MinBuyIn)
                {
                    return(Playability.NotEnoughBuyIn);
                }
                if (scrapAmount > MaxBuyIn)
                {
                    return(Playability.TooMuchBuyIn);
                }
            }
            return(Playability.OK);
        }
        protected override int GetAvailableInputsForPlayer(CardPlayerData playerData)
        {
            PokerInputOption pokerInputOption = PokerInputOption.None;

            if (playerData == null || isWaitingBetweenTurns)
            {
                return((int)pokerInputOption);
            }
            if (!base.HasRoundInProgress)
            {
                if (!playerData.LeftRoundEarly && playerData.Cards.Count > 0 && !playerData.SendCardDetails)
                {
                    pokerInputOption |= PokerInputOption.RevealHand;
                }
                return((int)pokerInputOption);
            }
            CardPlayerData activePlayer;

            if (!TryGetActivePlayer(out activePlayer) || playerData != activePlayer)
            {
                return((int)pokerInputOption);
            }
            int scrapAmount = playerData.GetScrapAmount();

            if (scrapAmount > 0)
            {
                pokerInputOption |= PokerInputOption.AllIn;
                pokerInputOption |= PokerInputOption.Fold;
                int currentBet = GetCurrentBet();
                if (playerData.betThisTurn >= currentBet)
                {
                    pokerInputOption |= PokerInputOption.Check;
                }
                if (currentBet > playerData.betThisTurn && scrapAmount >= currentBet - playerData.betThisTurn)
                {
                    pokerInputOption |= PokerInputOption.Call;
                }
                if (scrapAmount >= GetCurrentMinRaise(playerData))
                {
                    pokerInputOption = ((BiggestRaiseThisTurn != 0) ? (pokerInputOption | PokerInputOption.Raise) : (pokerInputOption | PokerInputOption.Bet));
                }
            }
            return((int)pokerInputOption);
        }