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