/// <summary>
        /// Performs the action.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <param name="shoe">The shoe.</param>
        /// <returns></returns>
        public bool PerformAction(BjActionsEnum action, BjShoe shoe)
        {
            if (GetActiveHand == null)
            {
                return(false);
            }
            var success = false;

            switch (action)
            {
            case BjActionsEnum.DealNewHand:
                success = true;
                break;

            case BjActionsEnum.Hit:
                success = IsHitSuccess(GetActiveHand, shoe);
                break;

            case BjActionsEnum.Stand:
                GetActiveHand.IsStanding = true;
                success = true;
                break;

            case BjActionsEnum.DoubleDown:
                if (CurrentHands.Count >= MaxHands)
                {
                    return(false);
                }
                success = IsDoubleDownSuccess(GetActiveHand, shoe);
                if (success)
                {
                    Chips = Chips - GetActiveHand.Bet;
                }
                GetActiveHand.IsDoubleDown = success;
                break;

            case BjActionsEnum.Split:
                if (CurrentHands.Count >= MaxHands)
                {
                    return(false);
                }
                success = IsSplitSuccess(GetActiveHand, shoe);
                if (success)
                {
                    Chips = Chips - GetActiveHand.Bet;
                }
                break;
            }

            Log.Info($"PerformAction:hand={GetActiveHand},action={action},success={success}");

            return(success);
        }
Example #2
0
        /// <summary>
        ///     Shoes the has cards to complete action.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <returns></returns>
        public bool ShoeHasCardsToCompleteAction(BjActionsEnum action)
        {
            switch (action)
            {
            case BjActionsEnum.Hit:
                return(ShoeCards.Count >= 1);

            case BjActionsEnum.Stand:
                return(true);

            case BjActionsEnum.DoubleDown:
                return(ShoeCards.Count >= 1);

            case BjActionsEnum.Split:
                return(ShoeCards.Count >= 2);
            }

            return(false);
        }