public bool Forfeit(out eLastActionStatus o_ActionStatus)
        {
            const bool v_ForfeitSuccessful = true;
            bool       isForfeitSuccessful = !v_ForfeitSuccessful;

            if (IsGameOver())
            {
                o_ActionStatus = eLastActionStatus.FailedGameOver;
            }
            else
            {
                switch (m_CurrentTurn)
                {
                case eTurns.Player1:
                    m_Player2.Score++;
                    m_GameStatus = eGameStatus.Player2Won;
                    break;

                case eTurns.Player2:
                    m_Player1.Score++;
                    m_GameStatus = eGameStatus.Player1Won;
                    break;
                }

                o_ActionStatus      = eLastActionStatus.Good;
                isForfeitSuccessful = v_ForfeitSuccessful;
            }

            return(isForfeitSuccessful);
        }
        public bool AttemptMove(int i_Row, int i_Col, out eLastActionStatus o_MoveStatus)
        {
            o_MoveStatus = eLastActionStatus.Good;
            char       charToInsert           = GetCurrentPlayerChar();
            const bool v_MoveMadeSuccessfully = true;
            bool       isMoveMadeSuccessfully = !v_MoveMadeSuccessfully;

            if (!IsSlotIndexWithinBounds(i_Row, i_Col))
            {
                o_MoveStatus = eLastActionStatus.FailedOutOfBounds;
            }
            else if (IsGameOver())
            {
                o_MoveStatus = eLastActionStatus.FailedGameOver;
            }
            else if (!IsSlotFree(i_Row, i_Col))
            {
                o_MoveStatus = eLastActionStatus.FailedSlotTaken;
            }
            else
            {
                o_MoveStatus = eLastActionStatus.Good;
                makeMove(i_Row, i_Col);
                isMoveMadeSuccessfully = v_MoveMadeSuccessfully;
                if (m_GameMode == eGameMode.PvC && !IsGameOver() && m_CurrentTurn == eTurns.Player2)
                {
                    makeComputerMove();
                }
            }

            return(isMoveMadeSuccessfully);
        }