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); }