use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Quest {
Route,
ClearBarbarianCamp,
ConnectResource,
ConstructWonder,
AcquireGreatPerson,
ConquerCityState,
FindPlayer,
FindNaturalWonder,
GiveGold,
PledgeToProtect,
ContestCulture,
ContestFaith,
ContestTechnologies,
Invest,
BullyCityState,
DenounceCivilization,
SpreadReligion,
}
impl EnumStr for Quest {
fn as_str(&self) -> &'static str {
match self {
Quest::Route => "Route",
Quest::ClearBarbarianCamp => "Clear Barbarian Camp",
Quest::ConnectResource => "Connect Resource",
Quest::ConstructWonder => "Construct Wonder",
Quest::AcquireGreatPerson => "Acquire Great Person",
Quest::ConquerCityState => "Conquer City State",
Quest::FindPlayer => "Find Player",
Quest::FindNaturalWonder => "Find Natural Wonder",
Quest::GiveGold => "Give Gold",
Quest::PledgeToProtect => "Pledge to Protect",
Quest::ContestCulture => "Contest Culture",
Quest::ContestFaith => "Contest Faith",
Quest::ContestTechnologies => "Contest Technologies",
Quest::Invest => "Invest",
Quest::BullyCityState => "Bully City State",
Quest::DenounceCivilization => "Denounce Civilization",
Quest::SpreadReligion => "Spread Religion",
}
}
fn from_str(s: &str) -> Self {
match s {
"Route" => Quest::Route,
"Clear Barbarian Camp" => Quest::ClearBarbarianCamp,
"Connect Resource" => Quest::ConnectResource,
"Construct Wonder" => Quest::ConstructWonder,
"Acquire Great Person" => Quest::AcquireGreatPerson,
"Conquer City State" => Quest::ConquerCityState,
"Find Player" => Quest::FindPlayer,
"Find Natural Wonder" => Quest::FindNaturalWonder,
"Give Gold" => Quest::GiveGold,
"Pledge to Protect" => Quest::PledgeToProtect,
"Contest Culture" => Quest::ContestCulture,
"Contest Faith" => Quest::ContestFaith,
"Contest Technologies" => Quest::ContestTechnologies,
"Invest" => Quest::Invest,
"Bully City State" => Quest::BullyCityState,
"Denounce Civilization" => Quest::DenounceCivilization,
"Spread Religion" => Quest::SpreadReligion,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}