use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum TileImprovement {
Farm,
LumberMill,
Mine,
TradingPost,
Camp,
OilWell,
OffshorePlatform,
Pasture,
Plantation,
Quarry,
FishingBoats,
Fort,
Road,
Railroad,
RemoveForest,
RemoveJungle,
RemoveFallout,
RemoveMarsh,
RemoveRoad,
RemoveRailroad,
CancelImprovementOrder,
Repair,
Academy,
Landmark,
Manufactory,
CustomsHouse,
HolySite,
Citadel,
Moai,
TerraceFarm,
Polder,
AncientRuins,
CityRuins,
CityCenter,
BarbarianEncampment,
}
impl EnumStr for TileImprovement {
fn as_str(&self) -> &'static str {
match self {
TileImprovement::Farm => "Farm",
TileImprovement::LumberMill => "Lumber mill",
TileImprovement::Mine => "Mine",
TileImprovement::TradingPost => "Trading post",
TileImprovement::Camp => "Camp",
TileImprovement::OilWell => "Oil well",
TileImprovement::OffshorePlatform => "Offshore Platform",
TileImprovement::Pasture => "Pasture",
TileImprovement::Plantation => "Plantation",
TileImprovement::Quarry => "Quarry",
TileImprovement::FishingBoats => "Fishing Boats",
TileImprovement::Fort => "Fort",
TileImprovement::Road => "Road",
TileImprovement::Railroad => "Railroad",
TileImprovement::RemoveForest => "Remove Forest",
TileImprovement::RemoveJungle => "Remove Jungle",
TileImprovement::RemoveFallout => "Remove Fallout",
TileImprovement::RemoveMarsh => "Remove Marsh",
TileImprovement::RemoveRoad => "Remove Road",
TileImprovement::RemoveRailroad => "Remove Railroad",
TileImprovement::CancelImprovementOrder => "Cancel improvement order",
TileImprovement::Repair => "Repair",
TileImprovement::Academy => "Academy",
TileImprovement::Landmark => "Landmark",
TileImprovement::Manufactory => "Manufactory",
TileImprovement::CustomsHouse => "Customs house",
TileImprovement::HolySite => "Holy site",
TileImprovement::Citadel => "Citadel",
TileImprovement::Moai => "Moai",
TileImprovement::TerraceFarm => "Terrace farm",
TileImprovement::Polder => "Polder",
TileImprovement::AncientRuins => "Ancient ruins",
TileImprovement::CityRuins => "City ruins",
TileImprovement::CityCenter => "City center",
TileImprovement::BarbarianEncampment => "Barbarian encampment",
}
}
fn from_str(s: &str) -> Self {
match s {
"Farm" => TileImprovement::Farm,
"Lumber mill" => TileImprovement::LumberMill,
"Mine" => TileImprovement::Mine,
"Trading post" => TileImprovement::TradingPost,
"Camp" => TileImprovement::Camp,
"Oil well" => TileImprovement::OilWell,
"Offshore Platform" => TileImprovement::OffshorePlatform,
"Pasture" => TileImprovement::Pasture,
"Plantation" => TileImprovement::Plantation,
"Quarry" => TileImprovement::Quarry,
"Fishing Boats" => TileImprovement::FishingBoats,
"Fort" => TileImprovement::Fort,
"Road" => TileImprovement::Road,
"Railroad" => TileImprovement::Railroad,
"Remove Forest" => TileImprovement::RemoveForest,
"Remove Jungle" => TileImprovement::RemoveJungle,
"Remove Fallout" => TileImprovement::RemoveFallout,
"Remove Marsh" => TileImprovement::RemoveMarsh,
"Remove Road" => TileImprovement::RemoveRoad,
"Remove Railroad" => TileImprovement::RemoveRailroad,
"Cancel improvement order" => TileImprovement::CancelImprovementOrder,
"Repair" => TileImprovement::Repair,
"Academy" => TileImprovement::Academy,
"Landmark" => TileImprovement::Landmark,
"Manufactory" => TileImprovement::Manufactory,
"Customs house" => TileImprovement::CustomsHouse,
"Holy site" => TileImprovement::HolySite,
"Citadel" => TileImprovement::Citadel,
"Moai" => TileImprovement::Moai,
"Terrace farm" => TileImprovement::TerraceFarm,
"Polder" => TileImprovement::Polder,
"Ancient ruins" => TileImprovement::AncientRuins,
"City ruins" => TileImprovement::CityRuins,
"City center" => TileImprovement::CityCenter,
"Barbarian encampment" => TileImprovement::BarbarianEncampment,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}