29 lines
725 B
Rust
29 lines
725 B
Rust
|
|
// Eryn Wells <eryn@erynwells.me>
|
||
|
|
|
||
|
|
use super::Piece;
|
||
|
|
|
||
|
|
#[derive(Default)]
|
||
|
|
pub enum PieceDisplayStyle {
|
||
|
|
#[default]
|
||
|
|
Unicode,
|
||
|
|
ASCII,
|
||
|
|
LongForm,
|
||
|
|
}
|
||
|
|
|
||
|
|
pub struct PieceDisplay {
|
||
|
|
pub(super) piece: Piece,
|
||
|
|
pub(super) style: PieceDisplayStyle,
|
||
|
|
}
|
||
|
|
|
||
|
|
impl std::fmt::Display for PieceDisplay {
|
||
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||
|
|
match self.style {
|
||
|
|
PieceDisplayStyle::Unicode => write!(f, "{}", self.piece.to_unicode()),
|
||
|
|
PieceDisplayStyle::ASCII => write!(f, "{}", self.piece.to_ascii()),
|
||
|
|
PieceDisplayStyle::LongForm => {
|
||
|
|
write!(f, "{} {}", self.piece.color.name(), self.piece.shape.name())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|