changed implementation of ChessMove from struct to enum
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user