From cf42721235c4395292acfcb68924f34d24d0ff1f Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:14:49 +0200 Subject: [PATCH] Sliding pieces moves are now illegal if it's after the enemy --- Sources/Engine/Pieces/Bishop.swift | 8 ++++++++ Sources/Engine/Pieces/Piece.swift | 1 - Sources/Engine/Pieces/Queen.swift | 8 ++++++++ Sources/Engine/Pieces/Rook.swift | 8 ++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Sources/Engine/Pieces/Bishop.swift b/Sources/Engine/Pieces/Bishop.swift index 67787e5..79a40bb 100644 --- a/Sources/Engine/Pieces/Bishop.swift +++ b/Sources/Engine/Pieces/Bishop.swift @@ -22,6 +22,14 @@ final class Bishop: Piece, DiagonalMoves { } if last == nil { legalPositions.append(position) + if let square = delegate?.getSquareInfo(on: position), + let piece = square.piece + { + if piece.color != color { + delegate?.notify(.piecePinned(from: self, on: piece)) + last = position + } + } } } } diff --git a/Sources/Engine/Pieces/Piece.swift b/Sources/Engine/Pieces/Piece.swift index 212b4b6..efe19a0 100644 --- a/Sources/Engine/Pieces/Piece.swift +++ b/Sources/Engine/Pieces/Piece.swift @@ -54,7 +54,6 @@ public enum Kind: String, CaseIterable { } public class Piece: Hashable { - #warning("TODO: To be removed, handle everything through the delegate") public internal(set) var color: Color public internal(set) var halfMoveCount: UInt8 = 0 public var unicodeRepresentation: String { diff --git a/Sources/Engine/Pieces/Queen.swift b/Sources/Engine/Pieces/Queen.swift index 90cd67c..4bd5faa 100644 --- a/Sources/Engine/Pieces/Queen.swift +++ b/Sources/Engine/Pieces/Queen.swift @@ -24,6 +24,14 @@ final class Queen: Piece, LinearMoves, DiagonalMoves { if last == nil { legalPositions.append(position) + if let square = delegate?.getSquareInfo(on: position), + let piece = square.piece + { + if piece.color != color { + delegate?.notify(.piecePinned(from: self, on: piece)) + last = position + } + } } } } diff --git a/Sources/Engine/Pieces/Rook.swift b/Sources/Engine/Pieces/Rook.swift index c0929d9..a7e9199 100644 --- a/Sources/Engine/Pieces/Rook.swift +++ b/Sources/Engine/Pieces/Rook.swift @@ -22,6 +22,14 @@ final class Rook: Piece, LinearMoves { } if last == nil { legalPositions.append(position) + if let square = delegate?.getSquareInfo(on: position), + let piece = square.piece + { + if piece.color != color { + delegate?.notify(.piecePinned(from: self, on: piece)) + last = position + } + } } } }