[board] Implement all the bit twiddling to track whether castling is allowed for each player and side of the board
This commit is contained in:
parent
8cc7e64ba6
commit
31e5771d30
3 changed files with 100 additions and 7 deletions
|
@ -7,9 +7,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet};
|
|||
use crate::{
|
||||
bitboard::BitBoard,
|
||||
piece::{Color, Piece, PlacedPiece},
|
||||
Move, Position, Square,
|
||||
position::BoardSide,
|
||||
Move, Position,
|
||||
};
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
move_generator_declaration!(KingMoveGenerator, struct);
|
||||
move_generator_declaration!(KingMoveGenerator, new);
|
||||
|
@ -17,13 +17,21 @@ move_generator_declaration!(KingMoveGenerator, getters);
|
|||
|
||||
impl<'a> KingMoveGenerator<'a> {
|
||||
#[allow(unused_variables)]
|
||||
fn king_side_castle(position: &Position) -> Option<Move> {
|
||||
fn king_side_castle(position: &Position, color: Color) -> Option<Move> {
|
||||
if !position.is_castling_allowed(color, BoardSide::King) {
|
||||
return None;
|
||||
}
|
||||
|
||||
// TODO: Implement king side castle.
|
||||
None
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn queen_side_castle(position: &Position) -> Option<Move> {
|
||||
fn queen_side_castle(position: &Position, color: Color) -> Option<Move> {
|
||||
if !position.is_castling_allowed(color, BoardSide::Queen) {
|
||||
return None;
|
||||
}
|
||||
|
||||
// TODO: Implement queen side castle.
|
||||
None
|
||||
}
|
||||
|
@ -51,8 +59,8 @@ impl<'pos> MoveGeneratorInternal for KingMoveGenerator<'pos> {
|
|||
|
||||
let map_to_move = |sq| Move::new(piece, square, sq);
|
||||
|
||||
let king_side_castle = Self::king_side_castle(position);
|
||||
let queen_side_castle = Self::queen_side_castle(position);
|
||||
let king_side_castle = Self::king_side_castle(position, color);
|
||||
let queen_side_castle = Self::queen_side_castle(position, color);
|
||||
let quiet_moves = quiet_moves_bb
|
||||
.occupied_squares()
|
||||
.map(map_to_move)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue