[board] Implement ply and full move counters on Position

Pipe these numbers through the Builders
This commit is contained in:
Eryn Wells 2024-01-21 15:10:04 -08:00
parent 829d9af52c
commit dbbf2d4c46
3 changed files with 63 additions and 2 deletions

View file

@ -16,6 +16,8 @@ pub struct Builder {
flags: Flags,
pieces: BTreeMap<Square, Piece>,
kings: [Square; 2],
ply_counter: u16,
move_number: u16,
}
impl Builder {
@ -28,6 +30,16 @@ impl Builder {
self
}
pub fn ply_counter(&mut self, num: u16) -> &mut Self {
self.ply_counter = num;
self
}
pub fn move_number(&mut self, num: u16) -> &mut Self {
self.move_number = num;
self
}
pub fn place_piece(&mut self, piece: PlacedPiece) -> &mut Self {
let square = piece.square();
@ -50,7 +62,14 @@ impl Builder {
.filter(Self::is_piece_placement_valid),
);
Position::new(self.player_to_move, self.flags, pieces, None)
Position::new(
self.player_to_move,
self.flags,
pieces,
None,
self.ply_counter,
self.move_number,
)
}
}
@ -82,6 +101,8 @@ impl Default for Builder {
flags: Flags::default(),
pieces: pieces,
kings: [white_king_square, black_king_square],
ply_counter: 0,
move_number: 1,
}
}
}