use std::fmt;
#[derive(Debug)]
pub enum Error {
GameStarted,
GameEnded,
CubeReceived,
DoublingNotPermitted,
CubeValueInvalid,
PlayerInvalid,
FieldBlocked,
FieldInvalid,
NotYourTurn,
MoveInvalid,
MoveFirst,
}
impl std::error::Error for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Error::GameStarted => write!(f, "Game has already started"),
Error::GameEnded => write!(f, "Game has already ended"),
Error::PlayerInvalid => write!(f, "Invalid player"),
Error::CubeReceived => {
write!(
f,
"Opponent offered dice. Need to first accept or decline the doubling dice."
)
}
Error::CubeValueInvalid => write!(f, "Invalid cube value"),
Error::DoublingNotPermitted => write!(f, "Doubling not permitted"),
Error::FieldBlocked => write!(f, "Field blocked"),
Error::FieldInvalid => write!(f, "Invalid field"),
Error::NotYourTurn => write!(f, "Not your turn"),
Error::MoveInvalid => write!(f, "Invalid move"),
Error::MoveFirst => write!(f, "Move first"),
}
}
}