refactor
This commit is contained in:
@@ -158,7 +158,7 @@ impl DraughtsBoard {
|
||||
}
|
||||
}
|
||||
|
||||
fn apply_move(&mut self, mv: &LoggedMove) {
|
||||
fn redo_move(&mut self, mv: &LoggedMove) {
|
||||
let start = mv.start_position();
|
||||
let piece = self.get_piece(&start);
|
||||
let final_piece = if mv.pawn_promoted() {
|
||||
@@ -183,7 +183,7 @@ impl DraughtsBoard {
|
||||
};
|
||||
}
|
||||
|
||||
fn check_and_apply_move(&mut self, mv: &Move) -> Result<(), Error> {
|
||||
fn apply_move(&mut self, mv: &Move) -> Result<(), Error> {
|
||||
let start = mv.get_start_position();
|
||||
let piece = self.get_piece(&start);
|
||||
if let Piece::NoPiece = piece {
|
||||
@@ -410,7 +410,7 @@ impl DraughtsGame {
|
||||
}
|
||||
|
||||
fn redo_move(&mut self, mv: &LoggedMove) {
|
||||
self.board.apply_move(mv);
|
||||
self.board.redo_move(mv);
|
||||
if !mv.is_capture() || !mv.multi_capture() {
|
||||
self.next_turn();
|
||||
}
|
||||
@@ -422,13 +422,13 @@ impl DraughtsGame {
|
||||
if let Some(player) = piece.player() {
|
||||
if mv.is_movement() {
|
||||
if self.next_move == player {
|
||||
self.board.check_and_apply_move(mv)?;
|
||||
self.board.apply_move(mv)?;
|
||||
self.next_turn();
|
||||
} else {
|
||||
return Err(Error::WrongPlayer);
|
||||
}
|
||||
} else if self.next_move == player {
|
||||
self.board.check_and_apply_move(mv)?;
|
||||
self.board.apply_move(mv)?;
|
||||
// Check if more captures are available for the current piece
|
||||
if self
|
||||
.board
|
||||
@@ -845,7 +845,7 @@ mod tests {
|
||||
];
|
||||
for mv in moves {
|
||||
let mut board_clone = board.clone();
|
||||
board_clone.apply_move(&mv);
|
||||
board_clone.redo_move(&mv);
|
||||
assert_ne!(board, board_clone);
|
||||
board_clone.undo_move(&mv);
|
||||
assert_eq!(board, board_clone);
|
||||
|
@@ -50,17 +50,6 @@ pub struct LoggedMove {
|
||||
}
|
||||
|
||||
impl LoggedMove {
|
||||
fn is_pawn_promoted(
|
||||
piece: Piece,
|
||||
start: Position,
|
||||
dir: MoveDirection,
|
||||
is_capture: bool,
|
||||
) -> bool {
|
||||
let end_row = compute_end_position(start, dir, is_capture).row();
|
||||
!piece.is_crowned() && (Some(Player::White) == piece.player() && end_row == 7)
|
||||
|| (Some(Player::Red) == piece.player() && end_row == 0)
|
||||
}
|
||||
|
||||
pub fn movement(start: Position, dir: MoveDirection, is_pawn_promoted: bool) -> LoggedMove {
|
||||
let mut result = <Position as Into<u8>>::into(start) as u16;
|
||||
result |= (dir as u16) << 5;
|
||||
|
Reference in New Issue
Block a user