use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Policy {
Aristocracy,
Legalism,
Oligarchy,
LandedElite,
Monarchy,
TraditionComplete,
Republic,
Citizenship,
CollectiveRule,
Representation,
Meritocracy,
LibertyComplete,
WarriorCode,
Discipline,
MilitaryTradition,
MilitaryCaste,
ProfessionalArmy,
HonorComplete,
OrganizedReligion,
MandateOfHeaven,
Theocracy,
Reformation,
FreeReligion,
PietyComplete,
Philantropy,
Aesthetics,
Scholasticism,
CulturalDiplomacy,
EducatedElite,
PatronageComplete,
NavalTradition,
TradeUnions,
MerchantNavy,
Mercantilism,
Protectionism,
CommerceComplete,
Secularism,
Humanism,
FreeThought,
Sovereignty,
ScientificRevolution,
RationalismComplete,
Constitution,
UniversalSuffrage,
CivilSociety,
FreeSpeech,
Democracy,
FreedomComplete,
Populism,
Militarism,
Fascism,
PoliceState,
TotalWar,
AutocracyComplete,
UnitedFront,
PlannedEconomy,
Nationalism,
Socialism,
Communism,
OrderComplete,
}
impl EnumStr for Policy {
fn as_str(&self) -> &'static str {
match self {
Policy::Aristocracy => "Aristocracy",
Policy::Legalism => "Legalism",
Policy::Oligarchy => "Oligarchy",
Policy::LandedElite => "Landed Elite",
Policy::Monarchy => "Monarchy",
Policy::TraditionComplete => "Tradition Complete",
Policy::Republic => "Republic",
Policy::Citizenship => "Citizenship",
Policy::CollectiveRule => "Collective Rule",
Policy::Representation => "Representation",
Policy::Meritocracy => "Meritocracy",
Policy::LibertyComplete => "Liberty Complete",
Policy::WarriorCode => "Warrior Code",
Policy::Discipline => "Discipline",
Policy::MilitaryTradition => "Military Tradition",
Policy::MilitaryCaste => "Military Caste",
Policy::ProfessionalArmy => "Professional Army",
Policy::HonorComplete => "Honor Complete",
Policy::OrganizedReligion => "Organized Religion",
Policy::MandateOfHeaven => "Mandate Of Heaven",
Policy::Theocracy => "Theocracy",
Policy::Reformation => "Reformation",
Policy::FreeReligion => "Free Religion",
Policy::PietyComplete => "Piety Complete",
Policy::Philantropy => "Philantropy",
Policy::Aesthetics => "Aesthetics",
Policy::Scholasticism => "Scholasticism",
Policy::CulturalDiplomacy => "Cultural Diplomacy",
Policy::EducatedElite => "Educated Elite",
Policy::PatronageComplete => "Patronage Complete",
Policy::NavalTradition => "Naval Tradition",
Policy::TradeUnions => "Trade Unions",
Policy::MerchantNavy => "Merchant Navy",
Policy::Mercantilism => "Mercantilism",
Policy::Protectionism => "Protectionism",
Policy::CommerceComplete => "Commerce Complete",
Policy::Secularism => "Secularism",
Policy::Humanism => "Humanism",
Policy::FreeThought => "Free Thought",
Policy::Sovereignty => "Sovereignty",
Policy::ScientificRevolution => "Scientific Revolution",
Policy::RationalismComplete => "Rationalism Complete",
Policy::Constitution => "Constitution",
Policy::UniversalSuffrage => "Universal Suffrage",
Policy::CivilSociety => "Civil Society",
Policy::FreeSpeech => "Free Speech",
Policy::Democracy => "Democracy",
Policy::FreedomComplete => "Freedom Complete",
Policy::Populism => "Populism",
Policy::Militarism => "Militarism",
Policy::Fascism => "Fascism",
Policy::PoliceState => "Police State",
Policy::TotalWar => "Total War",
Policy::AutocracyComplete => "Autocracy Complete",
Policy::UnitedFront => "United Front",
Policy::PlannedEconomy => "Planned Economy",
Policy::Nationalism => "Nationalism",
Policy::Socialism => "Socialism",
Policy::Communism => "Communism",
Policy::OrderComplete => "Order Complete",
}
}
fn from_str(s: &str) -> Self {
match s {
"Aristocracy" => Policy::Aristocracy,
"Legalism" => Policy::Legalism,
"Oligarchy" => Policy::Oligarchy,
"Landed Elite" => Policy::LandedElite,
"Monarchy" => Policy::Monarchy,
"Tradition Complete" => Policy::TraditionComplete,
"Republic" => Policy::Republic,
"Citizenship" => Policy::Citizenship,
"Collective Rule" => Policy::CollectiveRule,
"Representation" => Policy::Representation,
"Meritocracy" => Policy::Meritocracy,
"Liberty Complete" => Policy::LibertyComplete,
"Warrior Code" => Policy::WarriorCode,
"Discipline" => Policy::Discipline,
"Military Tradition" => Policy::MilitaryTradition,
"Military Caste" => Policy::MilitaryCaste,
"Professional Army" => Policy::ProfessionalArmy,
"Honor Complete" => Policy::HonorComplete,
"Organized Religion" => Policy::OrganizedReligion,
"Mandate Of Heaven" => Policy::MandateOfHeaven,
"Theocracy" => Policy::Theocracy,
"Reformation" => Policy::Reformation,
"Free Religion" => Policy::FreeReligion,
"Piety Complete" => Policy::PietyComplete,
"Philantropy" => Policy::Philantropy,
"Aesthetics" => Policy::Aesthetics,
"Scholasticism" => Policy::Scholasticism,
"Cultural Diplomacy" => Policy::CulturalDiplomacy,
"Educated Elite" => Policy::EducatedElite,
"Patronage Complete" => Policy::PatronageComplete,
"Naval Tradition" => Policy::NavalTradition,
"Trade Unions" => Policy::TradeUnions,
"Merchant Navy" => Policy::MerchantNavy,
"Mercantilism" => Policy::Mercantilism,
"Protectionism" => Policy::Protectionism,
"Commerce Complete" => Policy::CommerceComplete,
"Secularism" => Policy::Secularism,
"Humanism" => Policy::Humanism,
"Free Thought" => Policy::FreeThought,
"Sovereignty" => Policy::Sovereignty,
"Scientific Revolution" => Policy::ScientificRevolution,
"Rationalism Complete" => Policy::RationalismComplete,
"Constitution" => Policy::Constitution,
"Universal Suffrage" => Policy::UniversalSuffrage,
"Civil Society" => Policy::CivilSociety,
"Free Speech" => Policy::FreeSpeech,
"Democracy" => Policy::Democracy,
"Freedom Complete" => Policy::FreedomComplete,
"Populism" => Policy::Populism,
"Militarism" => Policy::Militarism,
"Fascism" => Policy::Fascism,
"Police State" => Policy::PoliceState,
"Total War" => Policy::TotalWar,
"Autocracy Complete" => Policy::AutocracyComplete,
"United Front" => Policy::UnitedFront,
"Planned Economy" => Policy::PlannedEconomy,
"Nationalism" => Policy::Nationalism,
"Socialism" => Policy::Socialism,
"Communism" => Policy::Communism,
"Order Complete" => Policy::OrderComplete,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}