From 0abe9b6c19d3d5498af3d4bdbc733ddb1e2491b0 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 23 May 2025 09:56:47 -0700 Subject: [PATCH] [board, position] Add a color argument to opposing_sight New convention: active_color_ methods operate on the active color of the Board. Methods without that prefix take a color parameter and operate on that. Refactor opposing_sight to do this. --- board/src/castle.rs | 2 +- board/src/sight.rs | 11 +++++++---- position/src/position/position.rs | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/board/src/castle.rs b/board/src/castle.rs index 40322cb..6581676 100644 --- a/board/src/castle.rs +++ b/board/src/castle.rs @@ -61,7 +61,7 @@ impl Board { } // King cannot pass through check. - let opposing_sight = self.opposing_sight(); + let opposing_sight = self.opposing_sight(active_color); let opposing_pieces_can_see_castling_path = (parameters.check & opposing_sight).is_populated(); if opposing_pieces_can_see_castling_path { diff --git a/board/src/sight.rs b/board/src/sight.rs index c168343..ea34b7d 100644 --- a/board/src/sight.rs +++ b/board/src/sight.rs @@ -44,14 +44,17 @@ impl Board { .fold(BitBoard::empty(), BitOr::bitor) } + pub fn active_color_opposing_sight(&self) -> BitBoard { + self.opposing_sight(self.active_color) + } + /// A [`BitBoard`] of all squares visible by colors that oppose the given color. - pub fn opposing_sight(&self) -> BitBoard { + pub fn opposing_sight(&self, color: Color) -> BitBoard { // TODO: Probably want to implement a caching layer here. - let active_color = self.active_color; Color::ALL .into_iter() .filter_map(|c| { - if c == active_color { + if c == color { None } else { Some(self.friendly_sight(c)) @@ -223,7 +226,7 @@ mod tests { Black Rook on E7, ); - let sight = pos.opposing_sight(); + let sight = pos.active_color_opposing_sight(); assert_eq!(sight, bitboard![A7 B7 C7 D7 F7 G7 H7 E8 E6 E5 E4]); } diff --git a/position/src/position/position.rs b/position/src/position/position.rs index 457744d..0eedb0d 100644 --- a/position/src/position/position.rs +++ b/position/src/position/position.rs @@ -81,8 +81,8 @@ impl Position { } /// A [`BitBoard`] of all squares visible by colors that oppose the given color. - pub fn opposing_sight(&self) -> BitBoard { - self.board.opposing_sight() + pub fn active_color_opposing_sight(&self) -> BitBoard { + self.board.active_color_opposing_sight() } }