use std::fmt::{Display, Formatter};
use riichi_elements::prelude::*;
#[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Discard {
pub tile: Tile,
pub called_by: Player,
#[cfg_attr(feature = "serde", serde(rename = "riichi"))]
pub declares_riichi: bool,
#[cfg_attr(feature = "serde", serde(rename = "tsumogiri"))]
pub is_tsumogiri: bool,
}
impl Display for Discard {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
if self.declares_riichi {
write!(f, "RIICHI!({}{})",
self.tile,
if self.is_tsumogiri { "*" } else { " " })
} else {
write!(f, "discard({}{})",
self.tile,
if self.is_tsumogiri { "*" } else { " " })
}
}
}