diff --git a/position/src/move_generator/bishop.rs b/position/src/move_generator/bishop.rs index ec6a96a..5b72f78 100644 --- a/position/src/move_generator/bishop.rs +++ b/position/src/move_generator/bishop.rs @@ -1,7 +1,7 @@ // Eryn Wells use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; -use crate::{MoveBuilder, Position}; +use crate::Position; use chessfriend_bitboard::BitBoard; use chessfriend_core::{Color, Direction, Piece, PlacedPiece}; @@ -14,12 +14,11 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator { fn move_set_for_piece( position: &Position, - placed_piece: PlacedPiece, + piece: PlacedPiece, capture_mask: BitBoard, push_mask: BitBoard, ) -> MoveSet { - let piece = placed_piece.piece(); - let square = placed_piece.square(); + let square = piece.square(); let blockers = position.occupied_squares(); let empty_squares = !blockers; @@ -47,10 +46,10 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator { update_moves_with_ray!(SouthEast, occupied_squares); update_moves_with_ray!(SouthWest, occupied_squares); - let quiet_moves = all_moves & (empty_squares | !friendly_pieces); - let capture_moves = all_moves & opposing_pieces; + let quiet_moves = all_moves & (empty_squares | !friendly_pieces) & push_mask; + let capture_moves = all_moves & opposing_pieces & capture_mask; - MoveSet::new(placed_piece) + MoveSet::new(piece) .quiet_moves(quiet_moves) .capture_moves(capture_moves) } diff --git a/position/src/move_generator/knight.rs b/position/src/move_generator/knight.rs index 0f5bca3..66ee8ba 100644 --- a/position/src/move_generator/knight.rs +++ b/position/src/move_generator/knight.rs @@ -22,8 +22,8 @@ impl MoveGeneratorInternal for KnightMoveGenerator { let empty_squares = position.empty_squares(); let knight_moves = BitBoard::knight_moves(placed_piece.square()); - let quiet_moves = knight_moves & empty_squares; - let capture_moves = knight_moves & opposing_pieces; + let quiet_moves = knight_moves & empty_squares & push_mask; + let capture_moves = knight_moves & opposing_pieces & capture_mask; MoveSet::new(placed_piece) .quiet_moves(quiet_moves) diff --git a/position/src/move_generator/pawn.rs b/position/src/move_generator/pawn.rs index 9bfbbd5..f68baf4 100644 --- a/position/src/move_generator/pawn.rs +++ b/position/src/move_generator/pawn.rs @@ -21,8 +21,8 @@ impl MoveGeneratorInternal for PawnMoveGenerator { capture_mask: BitBoard, push_mask: BitBoard, ) -> MoveSet { - let capture_moves = Self::attacks(position, placed_piece); - let quiet_moves = Self::pushes(position, placed_piece); + let capture_moves = Self::attacks(position, placed_piece) & capture_mask; + let quiet_moves = Self::pushes(position, placed_piece) & push_mask; MoveSet::new(placed_piece) .quiet_moves(quiet_moves) diff --git a/position/src/move_generator/queen.rs b/position/src/move_generator/queen.rs index 943b46d..ad913fe 100644 --- a/position/src/move_generator/queen.rs +++ b/position/src/move_generator/queen.rs @@ -53,8 +53,8 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator { update_moves_with_ray!(SouthWest, occupied_squares); update_moves_with_ray!(West, occupied_squares); - let quiet_moves = all_moves & (empty_squares | !friendly_pieces); - let capture_moves = all_moves & opposing_pieces; + let quiet_moves = all_moves & (empty_squares | !friendly_pieces) & push_mask; + let capture_moves = all_moves & opposing_pieces & capture_mask; MoveSet::new(placed_piece) .quiet_moves(quiet_moves) diff --git a/position/src/move_generator/rook.rs b/position/src/move_generator/rook.rs index 1389b11..b440273 100644 --- a/position/src/move_generator/rook.rs +++ b/position/src/move_generator/rook.rs @@ -49,8 +49,8 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator { update_moves_with_ray!(South, occupied_squares); update_moves_with_ray!(West, occupied_squares); - let quiet_moves = all_moves & (empty_squares | !friendly_pieces); - let capture_moves = all_moves & opposing_pieces; + let quiet_moves = all_moves & (empty_squares | !friendly_pieces) & capture_mask; + let capture_moves = all_moves & opposing_pieces & push_mask; MoveSet::new(placed_piece) .quiet_moves(quiet_moves)