friendly_chess/chess/
play_move.rs1use super::{piece::Piece, SquareCoordinate};
2
3#[derive(Clone, PartialEq, Copy, Debug)]
4#[repr(u8)]
5pub enum MoveType {
6 Normal = 0,
7 EnPassantMove = 1,
8 Capture = 2,
9 EnPassantCapture = 4,
10 CastleKingside = 8,
11 CastleQueenside = 16,
12 Promotion = 32,
13}
14
15#[derive(Debug, Clone, Copy)]
23pub struct Move {
24 pub from: SquareCoordinate,
25 pub to: SquareCoordinate,
26 pub promotion_piece: Option<Piece>,
27}
28
29#[derive(Clone, Debug)]
30pub struct InternalMove {
32 pub move_type: MoveType,
33
34 pub from_sq: SquareCoordinate,
35 pub from_piece: Piece,
36 pub to_sq: SquareCoordinate,
37 pub to_piece: Option<Piece>,
38 pub promotion_piece: Option<Piece>,
39}
40
41