internal State EvaluateHands()
 {
     //BlackJack
     if (HandLogic.IsBlackJack(_defaultPlayer, _dealer))
     {
         return(State.BlackJack);
     }
     //Win
     else if (HandLogic.IsWin(_defaultPlayer, _dealer))
     {
         return(State.Win);
     }
     //Push
     else if (HandLogic.IsPush(_defaultPlayer, _dealer))
     {
         return(State.Push);
     }
     //Bust
     else if (HandLogic.IsBust(_defaultPlayer))
     {
         return(State.Bust);
     }
     //Loss
     else
     {
         return(State.Loss);
     }
 }
        public GameState Hit()
        {
            //throw Exception if Hit() is called when game state is not open.
            if (_gameState.CurrentState != State.Open)
            {
                throw new GameStateException($"Can not call Hit() if game State is not Open. " +
                                             $"Current state is {_gameState.CurrentState.ToString()}");
            }

            //If the game has no winner, give a card to the player
            AddCardToHand(_defaultPlayer);

            //Check for player blackjack or bust
            if (HandLogic.HasBlackJack(_defaultPlayer) || HandLogic.IsBust(_defaultPlayer))
            {
                //Init the end game
                EndGame();
            }

            return(_gameState);
        }