use core::hash::Hash;
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Shoku {
Manzu,
Pinzu,
Souzu,
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Kazehai {
Ton,
Nan,
Shaa,
Pei,
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Sangenpai {
Chun,
Haku,
Hatsu,
}
#[derive(Clone, Copy, Debug, Eq)]
pub struct Suupai {
pub shoku: Shoku,
pub rank: u8,
pub akadora: bool,
}
impl Hash for Suupai {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.shoku.hash(state);
self.rank.hash(state);
}
}
impl PartialEq for Suupai {
fn eq(&self, other: &Self) -> bool {
self.shoku == other.shoku && self.rank == other.rank
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Jihai {
Kazehai(Kazehai),
Sangenpai(Sangenpai),
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Pai {
Jihai(Jihai),
Suupai(Suupai),
}