From a4982c0fd310cde1b5df5619be7eedf16d1344b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Fri, 21 Nov 2025 14:18:23 +0100 Subject: [PATCH] implemented conversion method to_bitmove for enum ChessMove --- engine/src/chessmove.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/engine/src/chessmove.rs b/engine/src/chessmove.rs index aa5017e..aa3d507 100644 --- a/engine/src/chessmove.rs +++ b/engine/src/chessmove.rs @@ -153,4 +153,40 @@ impl ChessMove { } } } + pub(in super) fn to_bitmove(&self) -> BitMove { + let bitmove = match self { + ChessMove::Quiet { piece_type, from_square, to_square, promotion_piece } => { + let promotion_piece = match promotion_piece { + Some(piece) => Some(piece.to_index()), + None => None + }; + return BitMove::quiet( + from_square.to_index(), + to_square.to_index(), + promotion_piece + ); + }, + ChessMove::Capture { piece_type, from_square, to_square, captured_piece, promotion_piece } => { + let promotion_piece = match promotion_piece { + Some(piece) => Some(piece.to_index()), + None => None + }; + return BitMove::capture( + from_square.to_index(), + to_square.to_index(), + promotion_piece + ); + }, + ChessMove::Castle { king_type, king_from, king_to, rook_type, rook_from, rook_to } => { + return BitMove::castle( + king_from.to_index(), + king_to.to_index() + ); + }, + ChessMove::EnPassant { pawn_type, from_square, to_square, captured_piece, captured_from } => { + panic!("ChessMove::to_bitmove was left unimplemented"); + } + }; + return bitmove; + } }