/// <summary> /// Returns the current status of this game. /// </summary> /// <returns>The current "GameStatus".</returns> public GameStatus GetGameStatus() { if (m_possibleMoves.Count == 0) { if (m_board.ColorToPlayIsCheck()) { switch (m_board.State.ColorToPlay) { case PieceColor.White: return(GameStatus.BlackCheckmateVictory); case PieceColor.Black: return(GameStatus.WhiteCheckmateVictory); } } return(GameStatus.StalemateDraw); } if (IsDrawInsufficientPieces()) { return(GameStatus.InsufficientPiecesDraw); } if (IsDrawRepetitionOfMoves()) { return(GameStatus.MoveRepetitionDraw); } if (IsDrawFiftyMoveRule()) { return(GameStatus.FiftyMovesDraw); } if (m_clock.WhiteTimeOut) { return(GameStatus.BlackTimeVictory); } if (m_clock.BlackTimeOut) { return(GameStatus.WhiteTimeVictory); } if (m_board.ColorToPlayIsCheck()) { switch (m_board.State.ColorToPlay) { case PieceColor.White: return(GameStatus.WhiteIsCheck); case PieceColor.Black: return(GameStatus.BlackIsCheck); } } return(GameStatus.Normal); }