friendly_chess/chess/
play_move.rs

1use 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// impl MoveType {
16//     // Convert a Move type to its associated value
17//     // pub fn to_value(&self) -> u8 {
18//     //     *self as u8
19//     // }
20// }
21
22#[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)]
30/// Represent a player move.
31pub 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// impl InternalMove {
42//     pub fn new() -> Self {
43//         Self {
44//             move_type: MoveType::Normal,
45
46//         }
47//     }
48// }