//--------- OnMyStateExit[ S ] - state specific actions
    private void OnMyStateExit(GameStates.GameStateType state)
    {
        string exitMessage = "EXIT state: " + state.ToString();

        PostMessage(exitMessage);

        switch (state)
        {
        case GameStates.GameStateType.GamePlaying:
            OnMyStateExitGamePlaying();
            break;

        case GameStates.GameStateType.GameWon:
            // do nothing
            break;

        case GameStates.GameStateType.GameLost:
            // do nothing
            break;
        }
    }
    //--------- OnMyStateEnter[ S ] - state specific actions
    private void OnMyStateEnter(GameStates.GameStateType state)
    {
        string enterMessage = "ENTER state: " +
                              state.ToString();

        PostMessage(enterMessage);

        switch (state)
        {
        case GameStates.GameStateType.GamePlaying:
            OnMyStateEnterGamePlaying();
            break;

        case GameStates.GameStateType.GameWon:
            // do nothing
            break;

        case GameStates.GameStateType.GameLost:
            // do nothing
            break;
        }
    }