[board] Update all the move generator submodules to use MoveBuilder instead of Move

Along the way update "manual" piece creation to use the macros instead.
This commit is contained in:
Eryn Wells 2024-01-17 08:43:48 -08:00
parent ca9ff94d2a
commit 2174bcf009
7 changed files with 79 additions and 73 deletions

View file

@ -3,7 +3,7 @@
use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet};
use crate::{
piece::{Color, Piece, PlacedPiece},
BitBoard, Move, Position,
BitBoard, MoveBuilder, Position,
};
move_generator_declaration!(KnightMoveGenerator);
@ -21,12 +21,14 @@ impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> {
let quiet_moves_bb = knight_moves & empty_squares;
let capture_moves_bb = knight_moves & opposing_pieces;
let quiet_moves = quiet_moves_bb
.occupied_squares()
.map(|to_sq| Move::new(placed_piece.piece(), placed_piece.square(), to_sq));
let quiet_moves = quiet_moves_bb.occupied_squares().map(|to_sq| {
MoveBuilder::new(placed_piece.piece(), placed_piece.square(), to_sq).build()
});
let capture_moves = capture_moves_bb.occupied_squares().map(|to_sq| {
let captured_piece = position.piece_on_square(to_sq).unwrap();
Move::new(placed_piece.piece(), placed_piece.square(), to_sq).capturing(captured_piece)
MoveBuilder::new(placed_piece.piece(), placed_piece.square(), to_sq)
.capturing(captured_piece)
.build()
});
MoveSet::new(placed_piece)
@ -38,7 +40,7 @@ impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> {
#[cfg(test)]
mod tests {
use super::*;
use crate::Square;
use crate::{piece, Move, Square};
use std::collections::HashSet;
#[test]
@ -60,14 +62,14 @@ mod tests {
*/
let expected_moves = [
Move::new(Piece::knight(Color::White), Square::E4, Square::C3),
Move::new(Piece::knight(Color::White), Square::E4, Square::D2),
Move::new(Piece::knight(Color::White), Square::E4, Square::F2),
Move::new(Piece::knight(Color::White), Square::E4, Square::G3),
Move::new(Piece::knight(Color::White), Square::E4, Square::C5),
Move::new(Piece::knight(Color::White), Square::E4, Square::D6),
Move::new(Piece::knight(Color::White), Square::E4, Square::G5),
Move::new(Piece::knight(Color::White), Square::E4, Square::F6),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::C3).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::D2).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::F2).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::G3).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::C5).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::D6).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::G5).build(),
MoveBuilder::new(piece!(White Knight), Square::E4, Square::F6).build(),
];
let mut generated_moves: HashSet<Move> = generator.iter().cloned().collect();