use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum PolicyBranch {
Tradition,
Liberty,
Honor,
Piety,
Patronage,
Commerce,
Rationalism,
Freedom,
Autocracy,
Order,
}
impl EnumStr for PolicyBranch {
fn as_str(&self) -> &'static str {
match self {
PolicyBranch::Tradition => "Tradition",
PolicyBranch::Liberty => "Liberty",
PolicyBranch::Honor => "Honor",
PolicyBranch::Piety => "Piety",
PolicyBranch::Patronage => "Patronage",
PolicyBranch::Commerce => "Commerce",
PolicyBranch::Rationalism => "Rationalism",
PolicyBranch::Freedom => "Freedom",
PolicyBranch::Autocracy => "Autocracy",
PolicyBranch::Order => "Order",
}
}
fn from_str(s: &str) -> Self {
match s {
"Tradition" => PolicyBranch::Tradition,
"Liberty" => PolicyBranch::Liberty,
"Honor" => PolicyBranch::Honor,
"Piety" => PolicyBranch::Piety,
"Patronage" => PolicyBranch::Patronage,
"Commerce" => PolicyBranch::Commerce,
"Rationalism" => PolicyBranch::Rationalism,
"Freedom" => PolicyBranch::Freedom,
"Autocracy" => PolicyBranch::Autocracy,
"Order" => PolicyBranch::Order,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}