[board] Mailbox-related changes
This commit is contained in:
parent
ee51a13870
commit
634f9e02f4
1 changed files with 5 additions and 4 deletions
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue