diff --git a/position/src/position/position.rs b/position/src/position/position.rs index 23e25d6..f2b6de6 100644 --- a/position/src/position/position.rs +++ b/position/src/position/position.rs @@ -235,13 +235,16 @@ impl Position { } pub(crate) fn is_king_in_check(&self) -> bool { - let sight_of_opposing_player = self.sight_of_player(self.color_to_move.other()); - sight_of_opposing_player.is_set(self.king_square(self.color_to_move)) + let danger_squares = self.king_danger(self.color_to_move); + (danger_squares & self.king_bitboard(self.color_to_move)).is_empty() + } + + fn king_bitboard(&self, player: Color) -> &BitBoard { + self.pieces.bitboard_for_piece(&Piece::king(player)) } pub(crate) fn king_square(&self, player: Color) -> Square { - self.pieces - .bitboard_for_piece(&Piece::king(player)) + self.king_bitboard(player) .occupied_squares() .next() .unwrap()