[board] Mailbox-related changes

This commit is contained in:
Eryn Wells 2024-07-13 08:10:59 -07:00
parent ee51a13870
commit 634f9e02f4

View file

@ -3,10 +3,11 @@
mod bitboards;
mod mailbox;
pub(crate) use mailbox::Mailbox;
use bitboards::{ByColor, ByColorAndShape};
use chessfriend_bitboard::BitBoard;
use chessfriend_core::{Color, Piece, PlacedPiece, Shape, Square};
use mailbox::Mailbox;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PlacePieceStrategy {
@ -52,7 +53,7 @@ impl PieceSet {
for s in Shape::into_iter() {
let bitboard = pieces[c as usize][s as usize];
for square in bitboard.occupied_squares() {
mailbox.set(square, Piece::new(c, s));
mailbox.set(Piece::new(c, s), square);
}
}
}
@ -114,7 +115,7 @@ impl PieceSet {
let piece: Piece = piece.into();
self.by_color_and_shape.set_square(square, piece);
self.by_color.set_square(square, color);
self.mailbox.set(square, piece);
self.mailbox.set(piece, square);
Ok(PlacedPiece::new(piece, square))
}
@ -123,7 +124,7 @@ impl PieceSet {
if let Some(piece) = self.mailbox.get(square) {
self.by_color_and_shape.clear_square(square, piece.into());
self.by_color.clear_square(square, piece.color());
self.mailbox.clear(square);
self.mailbox.remove(square);
Some(PlacedPiece::new(piece, square))
} else {