[board] Implement PositionBuilder::from_position

Create a PositionBuilder from a Position.
This commit is contained in:
Eryn Wells 2024-01-22 08:12:55 -08:00
parent c1008ef672
commit bf2bccbc7d

View file

@ -25,6 +25,27 @@ impl Builder {
Self::default()
}
pub fn from_position(position: &Position) -> Self {
let pieces = BTreeMap::from_iter(
position
.pieces(Color::White)
.chain(position.pieces(Color::Black))
.map(|placed_piece| (placed_piece.square(), *placed_piece.piece())),
);
let white_king = position.king_square(Color::White);
let black_king = position.king_square(Color::Black);
Self {
player_to_move: position.player_to_move(),
flags: position.flags(),
pieces,
kings: [white_king, black_king],
ply_counter: position.ply_counter(),
move_number: position.move_number(),
}
}
pub fn to_move(&mut self, player: Color) -> &mut Self {
self.player_to_move = player;
self