[position, board] Remove a bunch of dead code
This commit is contained in:
parent
039fd2b080
commit
7c9c5484ba
4 changed files with 0 additions and 118 deletions
|
@ -1,74 +0,0 @@
|
|||
use chessfriend_core::Color;
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum AdvanceHalfMove {
|
||||
Reset,
|
||||
#[default]
|
||||
Advance,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
|
||||
pub struct Clock {
|
||||
/// The number of completed turns. A turn finishes when every player has moved.
|
||||
pub full_move_number: u16,
|
||||
|
||||
/// The number of moves by all players since the last pawn advance or capture.
|
||||
pub half_move_number: u16,
|
||||
}
|
||||
|
||||
impl Clock {
|
||||
pub fn advance(&mut self, advance_half_move: &AdvanceHalfMove) {
|
||||
let next_color = self.active_color.next();
|
||||
|
||||
match self.active_color {
|
||||
Color::Black => self.full_move_number += 1,
|
||||
Color::White => {}
|
||||
}
|
||||
|
||||
self.half_move_number = match advance_half_move {
|
||||
AdvanceHalfMove::Reset => 0,
|
||||
AdvanceHalfMove::Advance => self.half_move_number + 1,
|
||||
};
|
||||
|
||||
self.active_color = next_color;
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn default_state() {
|
||||
let clock = Clock::default();
|
||||
assert_eq!(clock.active_color, Color::White);
|
||||
assert_eq!(clock.half_move_number, 0);
|
||||
assert_eq!(clock.full_move_number, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn advance() {
|
||||
let mut clock = Clock::default();
|
||||
|
||||
clock.advance(&AdvanceHalfMove::default());
|
||||
assert_eq!(clock.active_color, Color::Black);
|
||||
assert_eq!(clock.half_move_number, 1);
|
||||
assert_eq!(clock.full_move_number, 0);
|
||||
|
||||
clock.advance(&AdvanceHalfMove::default());
|
||||
assert_eq!(clock.active_color, Color::White);
|
||||
assert_eq!(clock.half_move_number, 2);
|
||||
assert_eq!(clock.full_move_number, 1);
|
||||
|
||||
clock.advance(&AdvanceHalfMove::default());
|
||||
assert_eq!(clock.active_color, Color::Black);
|
||||
assert_eq!(clock.half_move_number, 3);
|
||||
assert_eq!(clock.full_move_number, 1);
|
||||
|
||||
// The half move clock resets after a capture or pawn push.
|
||||
clock.advance(&AdvanceHalfMove::Reset);
|
||||
assert_eq!(clock.active_color, Color::White);
|
||||
assert_eq!(clock.half_move_number, 0);
|
||||
assert_eq!(clock.full_move_number, 2);
|
||||
}
|
||||
}
|
|
@ -1,8 +1,5 @@
|
|||
// Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
mod check;
|
||||
mod display;
|
||||
mod move_generator;
|
||||
mod movement;
|
||||
mod position;
|
||||
mod sight;
|
||||
|
|
|
@ -13,7 +13,6 @@ use std::{cell::OnceCell, fmt, ops::BitOr};
|
|||
#[derive(Clone, Debug, Eq)]
|
||||
pub struct Position {
|
||||
pub board: Board,
|
||||
moves: OnceCell<Moves>,
|
||||
pub(super) captures: [Vec<Piece>; Color::NUM],
|
||||
}
|
||||
|
||||
|
@ -145,18 +144,6 @@ impl Position {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn has_en_passant_square(&self) -> bool {
|
||||
self.board.en_passant().is_some()
|
||||
}
|
||||
|
||||
pub fn en_passant(&self) -> Option<EnPassant> {
|
||||
self.board.en_passant()
|
||||
}
|
||||
|
||||
fn _en_passant_target_square(&self) -> Option<Square> {
|
||||
self.board.en_passant().map(EnPassant::target_square)
|
||||
}
|
||||
|
||||
pub(crate) fn moves_for_piece(&self, piece: &PlacedPiece) -> Option<&MoveSet> {
|
||||
self.moves().moves_for_piece(piece)
|
||||
}
|
||||
|
@ -237,7 +224,6 @@ impl Default for Position {
|
|||
fn default() -> Self {
|
||||
Self {
|
||||
board: Board::default(),
|
||||
moves: OnceCell::new(),
|
||||
captures: Default::default(),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
// Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
use chessfriend_bitboard::BitBoard;
|
||||
use chessfriend_core::{Direction, Square};
|
||||
|
||||
fn _find_ray_connecting_squares(origin_square: Square, target_square: Square) -> BitBoard {
|
||||
macro_rules! ray {
|
||||
($square:expr, $direction:expr) => {
|
||||
($direction, BitBoard::ray($square, $direction))
|
||||
};
|
||||
}
|
||||
|
||||
let target: BitBoard = target_square.into();
|
||||
match Direction::ALL
|
||||
.iter()
|
||||
.map(|direction| ray!(origin_square, *direction))
|
||||
.find(|(direction, &ray)| (ray & target).is_populated())
|
||||
{
|
||||
Some((direction, ray)) => {
|
||||
if let Some(first_occupied_square) = BitBoard::$occupied_squares(&(ray & $blockers)).next()
|
||||
let remainder = BitBoard::ray(first_occupied_square, direction);
|
||||
let attack_ray = ray & !remainder;
|
||||
attack_ray * ray
|
||||
}
|
||||
None => BitBoard::EMPTY,
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue