use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Difficulty {
Settler,
Chieftain,
Warlord,
Prince,
King,
Emperor,
Immortal,
Deity,
}
impl EnumStr for Difficulty {
fn as_str(&self) -> &'static str {
match self {
Difficulty::Settler => "Settler",
Difficulty::Chieftain => "Chieftain",
Difficulty::Warlord => "Warlord",
Difficulty::Prince => "Prince",
Difficulty::King => "King",
Difficulty::Emperor => "Emperor",
Difficulty::Immortal => "Immortal",
Difficulty::Deity => "Deity",
}
}
fn from_str(s: &str) -> Self {
match s {
"Settler" => Difficulty::Settler,
"Chieftain" => Difficulty::Chieftain,
"Warlord" => Difficulty::Warlord,
"Prince" => Difficulty::Prince,
"King" => Difficulty::King,
"Emperor" => Difficulty::Emperor,
"Immortal" => Difficulty::Immortal,
"Deity" => Difficulty::Deity,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}