use super::{piece::Piece, SquareCoordinate};
#[derive(Clone, PartialEq, Copy, Debug)]
#[repr(u8)]
pub enum MoveType {
Normal = 0,
EnPassantMove = 1,
Capture = 2,
EnPassantCapture = 4,
CastleKingside = 8,
CastleQueenside = 16,
Promotion = 32,
}
#[derive(Debug, Clone, Copy)]
pub struct Move {
pub from: SquareCoordinate,
pub to: SquareCoordinate,
pub promotion_piece: Option<Piece>,
}
#[derive(Clone, Debug)]
pub struct InternalMove {
pub move_type: MoveType,
pub from_sq: SquareCoordinate,
pub from_piece: Piece,
pub to_sq: SquareCoordinate,
pub to_piece: Option<Piece>,
pub promotion_piece: Option<Piece>,
}