35 lines
784 B
Rust
35 lines
784 B
Rust
|
// Eryn Wells <eryn@erynwells.me>
|
||
|
|
||
|
use chessfriend_core::Shape;
|
||
|
|
||
|
pub(crate) enum Kind {
|
||
|
Quiet = 0b00,
|
||
|
DoublePush = 0b01,
|
||
|
KingSideCastle = 0b10,
|
||
|
QueenSideCastle = 0b11,
|
||
|
Capture = 0b0100,
|
||
|
EnPassantCapture = 0b0101,
|
||
|
Promotion = 0b1000,
|
||
|
CapturePromotion = 0b1100,
|
||
|
}
|
||
|
|
||
|
#[repr(u16)]
|
||
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||
|
pub enum PromotionShape {
|
||
|
Knight = 0b00,
|
||
|
Bishop = 0b01,
|
||
|
Rook = 0b10,
|
||
|
Queen = 0b11,
|
||
|
}
|
||
|
|
||
|
impl From<PromotionShape> for Shape {
|
||
|
fn from(value: PromotionShape) -> Self {
|
||
|
match value {
|
||
|
PromotionShape::Knight => Shape::Knight,
|
||
|
PromotionShape::Bishop => Shape::Bishop,
|
||
|
PromotionShape::Rook => Shape::Rook,
|
||
|
PromotionShape::Queen => Shape::Queen,
|
||
|
}
|
||
|
}
|
||
|
}
|