From 2c8e48f30f001088460af966d92cf79c791e8362 Mon Sep 17 00:00:00 2001 From: Sergey Taramaly Date: Mon, 15 Jan 2024 02:06:40 +0700 Subject: [PATCH 1/2] Refactoring UpdateGameEndTypes --- src/Rudzoft.ChessLib/Game.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Rudzoft.ChessLib/Game.cs b/src/Rudzoft.ChessLib/Game.cs index 364b7db6..37e1117d 100644 --- a/src/Rudzoft.ChessLib/Game.cs +++ b/src/Rudzoft.ChessLib/Game.cs @@ -75,6 +75,8 @@ static Game() public bool IsRepetition => _pos.IsRepetition; + public bool IsRule50 => _pos.Rule50 >= 100; + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void NewGame(string fen = Fen.Fen.StartPositionFen) { @@ -91,7 +93,7 @@ public void UpdateDrawTypes() var gameEndType = GameEndTypes.None; if (IsRepetition) gameEndType |= GameEndTypes.Repetition; - if (Pos.Rule50 >= 100) + if (IsRule50) gameEndType |= GameEndTypes.FiftyMove; var moveList = _moveLists.Get(); From 6d68d8d637d7ea4f2d3c676fc3564fc9dc3442c9 Mon Sep 17 00:00:00 2001 From: Sergey Taramaly Date: Mon, 15 Jan 2024 02:07:10 +0700 Subject: [PATCH 2/2] Add IsMated status updating --- src/Rudzoft.ChessLib/Game.cs | 8 ++++++-- src/Rudzoft.ChessLib/IGame.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Rudzoft.ChessLib/Game.cs b/src/Rudzoft.ChessLib/Game.cs index 37e1117d..5184700d 100644 --- a/src/Rudzoft.ChessLib/Game.cs +++ b/src/Rudzoft.ChessLib/Game.cs @@ -77,6 +77,8 @@ static Game() public bool IsRule50 => _pos.Rule50 >= 100; + public bool IsMated => _pos.IsMate; + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void NewGame(string fen = Fen.Fen.StartPositionFen) { @@ -88,14 +90,16 @@ public void NewGame(string fen = Fen.Fen.StartPositionFen) [MethodImpl(MethodImplOptions.AggressiveInlining)] public FenData GetFen() => _pos.GenerateFen(); - public void UpdateDrawTypes() + public void UpdateGameEndTypes() { var gameEndType = GameEndTypes.None; if (IsRepetition) gameEndType |= GameEndTypes.Repetition; if (IsRule50) gameEndType |= GameEndTypes.FiftyMove; - + if (IsMated) + gameEndType |= GameEndTypes.CheckMate; + var moveList = _moveLists.Get(); moveList.Generate(in _pos); // ReSharper disable once LoopCanBeConvertedToQuery diff --git a/src/Rudzoft.ChessLib/IGame.cs b/src/Rudzoft.ChessLib/IGame.cs index ef20d316..f36fc287 100644 --- a/src/Rudzoft.ChessLib/IGame.cs +++ b/src/Rudzoft.ChessLib/IGame.cs @@ -51,7 +51,7 @@ public interface IGame : IEnumerable FenData GetFen(); - void UpdateDrawTypes(); + void UpdateGameEndTypes(); string ToString();