Make 'half_move_clock' a 'u32'
All checks were successful
ci/woodpecker/push/check Pipeline was successful
All checks were successful
ci/woodpecker/push/check Pipeline was successful
It *could* be set to a high value due to e.g: starting the engine in the middle of a game. Moving from a `u8` to a `u32` does not change the size of the type, so let's just do that. Use that opportunity to fix the comment about the number of *half-moves* (it's 50 moves *per player*).
This commit is contained in:
parent
353271f427
commit
a4aa4ae1e4
|
@ -8,7 +8,7 @@ pub struct ChessBoardBuilder {
|
||||||
// Same fields as [ChessBoard].
|
// Same fields as [ChessBoard].
|
||||||
castle_rights: [CastleRights; Color::NUM_VARIANTS],
|
castle_rights: [CastleRights; Color::NUM_VARIANTS],
|
||||||
en_passant: Option<Square>,
|
en_passant: Option<Square>,
|
||||||
half_move_clock: u8,
|
half_move_clock: u32,
|
||||||
side: Color,
|
side: Color,
|
||||||
// 1-based, a turn is *two* half-moves (i.e: both players have played).
|
// 1-based, a turn is *two* half-moves (i.e: both players have played).
|
||||||
turn_count: u32,
|
turn_count: u32,
|
||||||
|
@ -41,7 +41,7 @@ impl ChessBoardBuilder {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_half_move_clock(&mut self, clock: u8) -> &mut Self {
|
pub fn with_half_move_clock(&mut self, clock: u32) -> &mut Self {
|
||||||
self.half_move_clock = clock;
|
self.half_move_clock = clock;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ pub struct ChessBoard {
|
||||||
/// `Some(target_square)` if a double-step move was made.
|
/// `Some(target_square)` if a double-step move was made.
|
||||||
en_passant: Option<Square>,
|
en_passant: Option<Square>,
|
||||||
/// The number of half-turns without either a pawn push or capture.
|
/// The number of half-turns without either a pawn push or capture.
|
||||||
half_move_clock: u8, // Should never go higher than 50.
|
half_move_clock: u32, // Should *probably* never go higher than 100.
|
||||||
/// The number of half-turns so far.
|
/// The number of half-turns so far.
|
||||||
total_plies: u32, // Should be plenty.
|
total_plies: u32, // Should be plenty.
|
||||||
/// The current player turn.
|
/// The current player turn.
|
||||||
|
@ -36,7 +36,7 @@ pub struct ChessBoard {
|
||||||
pub struct NonReversibleState {
|
pub struct NonReversibleState {
|
||||||
castle_rights: [CastleRights; Color::NUM_VARIANTS],
|
castle_rights: [CastleRights; Color::NUM_VARIANTS],
|
||||||
en_passant: Option<Square>,
|
en_passant: Option<Square>,
|
||||||
half_move_clock: u8, // Should never go higher than 50.
|
half_move_clock: u32, // Should *probably* never go higher than 100.
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ChessBoard {
|
impl ChessBoard {
|
||||||
|
@ -105,7 +105,7 @@ impl ChessBoard {
|
||||||
|
|
||||||
/// Return the number of half-turns without either a pawn push or a capture.
|
/// Return the number of half-turns without either a pawn push or a capture.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn half_move_clock(&self) -> u8 {
|
pub fn half_move_clock(&self) -> u32 {
|
||||||
self.half_move_clock
|
self.half_move_clock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ impl ChessBoard {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the clocks are in agreement.
|
// Make sure the clocks are in agreement.
|
||||||
if u32::from(self.half_move_clock()) > self.total_plies() {
|
if self.half_move_clock() > self.total_plies() {
|
||||||
return Err(InvalidError::HalfMoveClockTooHigh);
|
return Err(InvalidError::HalfMoveClockTooHigh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue