changed implementation of ChessMove from struct to enum

This commit is contained in:
Varga Dávid Lajos
2025-11-21 13:29:01 +01:00
parent 5d108602ea
commit 821746d7cf

View File

@@ -1,12 +1,10 @@
use crate::piecetype;
use super::boardsquare::BoardSquare;
use super::movetype::MoveType;
use super::piecetype::PieceType;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct ChessMove {
/*pub struct ChessMove {
pub move_type: MoveType,
pub piece_type: PieceType,
pub from_square: BoardSquare,
@@ -14,6 +12,36 @@ pub struct ChessMove {
pub rook_from: BoardSquare,
pub rook_to: BoardSquare,
pub promotion_piece: Option<PieceType>,
}*/
pub enum ChessMove {
Quiet {
piece_type: PieceType,
from_square: BoardSquare,
to_square: BoardSquare,
promotion_piece: Option<PieceType>
},
Capture {
piece_type: PieceType,
from_square: BoardSquare,
to_square: BoardSquare,
captured_piece: PieceType,
promotion_piece: Option<PieceType>
},
Castle {
king_type: PieceType,
king_from: BoardSquare,
king_to: BoardSquare,
rook_type: PieceType,
rook_from: BoardSquare,
rook_to: BoardSquare
},
EnPassant {
pawn_type: PieceType,
from_square: BoardSquare,
to_square: BoardSquare,
captured_piece: PieceType,
captured_from: BoardSquare
}
}
impl ChessMove {
@@ -23,14 +51,11 @@ impl ChessMove {
to_square: BoardSquare,
promotion_piece: Option<PieceType>,
) -> Self {
return Self {
move_type: MoveType::Quiet,
piece_type: piece_type,
from_square: from_square,
to_square: to_square,
rook_from: BoardSquare::new(),
rook_to: BoardSquare::new(),
promotion_piece: promotion_piece,
return Self::Quiet {
piece_type,
from_square,
to_square,
promotion_piece
};
}
@@ -38,34 +63,33 @@ impl ChessMove {
piece_type: PieceType,
from_square: BoardSquare,
to_square: BoardSquare,
captured_piece: PieceType,
promotion_piece: Option<PieceType>,
) -> Self {
return Self {
move_type: MoveType::Capture,
piece_type: piece_type,
from_square: from_square,
to_square: to_square,
rook_from: BoardSquare::new(),
rook_to: BoardSquare::new(),
promotion_piece: promotion_piece,
return Self::Capture {
piece_type,
from_square,
to_square,
captured_piece,
promotion_piece
};
}
pub fn castle(
piece_type: PieceType,
from_square: BoardSquare,
to_square: BoardSquare,
king_type: PieceType,
king_from: BoardSquare,
king_to: BoardSquare,
rook_type: PieceType,
rook_from: BoardSquare,
rook_to: BoardSquare,
) -> Self {
return Self {
move_type: MoveType::Quiet,
piece_type: piece_type,
from_square: from_square,
to_square: to_square,
rook_from: rook_from,
rook_to: rook_to,
promotion_piece: None,
return Self::Castle {
king_type,
king_from,
king_to,
rook_type,
rook_from,
rook_to
};
}
}