use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Building {
Palace,
Monument,
Stele,
Granary,
Shrine,
Pyramid,
TempleOfArtemis,
StoneWorks,
Stonehenge,
Library,
PaperMaker,
TheGreatLibrary,
Circus,
WaterMill,
FloatingGardens,
Walls,
WallsOfBabylon,
ThePyramids,
MausoleumOfHalicarnassus,
Barracks,
Krepost,
StatueOfZeus,
Lighthouse,
TheGreatLighthouse,
Stable,
CircusMaximus,
Courthouse,
HangingGardens,
Colosseum,
TerracottaArmy,
Temple,
BurialTomb,
MudPyramidMosque,
NationalCollege,
TheOracle,
Amphitheater,
NationalEpic,
Market,
Bazaar,
Mint,
Petra,
Aqueduct,
GreatWall,
HeroicEpic,
Colossus,
Garden,
HagiaSophia,
GreatMosqueOfDjenne,
GrandTemple,
ChichenItza,
NationalTreasury,
MachuPicchu,
Workshop,
Longhouse,
Forge,
Harbor,
University,
Wat,
OxfordUniversity,
AngkorWat,
Castle,
MughalFort,
Alhambra,
Ironworks,
NotreDame,
Armory,
Observatory,
OperaHouse,
CeilidhHall,
SistineChapel,
Bank,
SatrapsCourt,
ForbiddenPalace,
Theatre,
LeaningTowerOfPisa,
HimejiCastle,
Seaport,
Hermitage,
TajMahal,
PorcelainTower,
Windmill,
CoffeeHouse,
Arsenal,
Kremlin,
Museum,
TheLouvre,
PublicSchool,
Factory,
BigBen,
MilitaryAcademy,
BrandenburgGate,
Hospital,
StockExchange,
HydroPlant,
Stadium,
BroadcastTower,
EiffelTower,
MilitaryBase,
StatueOfLiberty,
Neuschwanstein,
ResearchLab,
CristoRedentor,
MedicalLab,
ManhattanProject,
Pentagon,
SolarPlant,
RecyclingCenter,
SydneyOperaHouse,
NuclearPlant,
ApolloProgram,
CNTower,
BombShelter,
HubbleSpaceTelescope,
SpaceshipFactory,
UnitedNations,
UtopiaProject,
Cathedral,
Monastery,
Mosque,
Pagoda,
}
impl EnumStr for Building {
fn as_str(&self) -> &'static str {
match self {
Building::Palace => "Palace",
Building::Monument => "Monument",
Building::Stele => "Stele",
Building::Granary => "Granary",
Building::Shrine => "Shrine",
Building::Pyramid => "Pyramid",
Building::TempleOfArtemis => "Temple of Artemis",
Building::StoneWorks => "Stone Works",
Building::Stonehenge => "Stonehenge",
Building::Library => "Library",
Building::PaperMaker => "Paper Maker",
Building::TheGreatLibrary => "The Great Library",
Building::Circus => "Circus",
Building::WaterMill => "Water Mill",
Building::FloatingGardens => "Floating Gardens",
Building::Walls => "Walls",
Building::WallsOfBabylon => "Walls of Babylon",
Building::ThePyramids => "The Pyramids",
Building::MausoleumOfHalicarnassus => "Mausoleum of Halicarnassus",
Building::Barracks => "Barracks",
Building::Krepost => "Krepost",
Building::StatueOfZeus => "Statue of Zeus",
Building::Lighthouse => "Lighthouse",
Building::TheGreatLighthouse => "The Great Lighthouse",
Building::Stable => "Stable",
Building::CircusMaximus => "Circus Maximus",
Building::Courthouse => "Courthouse",
Building::HangingGardens => "Hanging Gardens",
Building::Colosseum => "Colosseum",
Building::TerracottaArmy => "Terracotta Army",
Building::Temple => "Temple",
Building::BurialTomb => "Burial Tomb",
Building::MudPyramidMosque => "Mud Pyramid Mosque",
Building::NationalCollege => "National College",
Building::TheOracle => "The Oracle",
Building::Amphitheater => "Amphitheater",
Building::NationalEpic => "National Epic",
Building::Market => "Market",
Building::Bazaar => "Bazaar",
Building::Mint => "Mint",
Building::Petra => "Petra",
Building::Aqueduct => "Aqueduct",
Building::GreatWall => "Great Wall",
Building::HeroicEpic => "Heroic Epic",
Building::Colossus => "Colossus",
Building::Garden => "Garden",
Building::HagiaSophia => "Hagia Sophia",
Building::GreatMosqueOfDjenne => "Great Mosque of Djenne",
Building::GrandTemple => "Grand Temple",
Building::ChichenItza => "Chichen Itza",
Building::NationalTreasury => "National Treasury",
Building::MachuPicchu => "Machu Picchu",
Building::Workshop => "Workshop",
Building::Longhouse => "Longhouse",
Building::Forge => "Forge",
Building::Harbor => "Harbor",
Building::University => "University",
Building::Wat => "Wat",
Building::OxfordUniversity => "Oxford University",
Building::AngkorWat => "Angkor Wat",
Building::Castle => "Castle",
Building::MughalFort => "Mughal Fort",
Building::Alhambra => "Alhambra",
Building::Ironworks => "Ironworks",
Building::NotreDame => "Notre Dame",
Building::Armory => "Armory",
Building::Observatory => "Observatory",
Building::OperaHouse => "Opera House",
Building::CeilidhHall => "Ceilidh Hall",
Building::SistineChapel => "Sistine Chapel",
Building::Bank => "Bank",
Building::SatrapsCourt => "Satrap's Court",
Building::ForbiddenPalace => "Forbidden Palace",
Building::Theatre => "Theatre",
Building::LeaningTowerOfPisa => "Leaning Tower of Pisa",
Building::HimejiCastle => "Himeji Castle",
Building::Seaport => "Seaport",
Building::Hermitage => "Hermitage",
Building::TajMahal => "Taj Mahal",
Building::PorcelainTower => "Porcelain Tower",
Building::Windmill => "Windmill",
Building::CoffeeHouse => "Coffee House",
Building::Arsenal => "Arsenal",
Building::Kremlin => "Kremlin",
Building::Museum => "Museum",
Building::TheLouvre => "The Louvre",
Building::PublicSchool => "Public School",
Building::Factory => "Factory",
Building::BigBen => "Big Ben",
Building::MilitaryAcademy => "Military Academy",
Building::BrandenburgGate => "Brandenburg Gate",
Building::Hospital => "Hospital",
Building::StockExchange => "Stock Exchange",
Building::HydroPlant => "Hydro Plant",
Building::Stadium => "Stadium",
Building::BroadcastTower => "Broadcast Tower",
Building::EiffelTower => "Eiffel Tower",
Building::MilitaryBase => "Military Base",
Building::StatueOfLiberty => "Statue of Liberty",
Building::Neuschwanstein => "Neuschwanstein",
Building::ResearchLab => "Research Lab",
Building::CristoRedentor => "Cristo Redentor",
Building::MedicalLab => "Medical Lab",
Building::ManhattanProject => "Manhattan Project",
Building::Pentagon => "Pentagon",
Building::SolarPlant => "Solar Plant",
Building::RecyclingCenter => "Recycling Center",
Building::SydneyOperaHouse => "Sydney Opera House",
Building::NuclearPlant => "Nuclear Plant",
Building::ApolloProgram => "Apollo Program",
Building::CNTower => "CN Tower",
Building::BombShelter => "Bomb Shelter",
Building::HubbleSpaceTelescope => "Hubble Space Telescope",
Building::SpaceshipFactory => "Spaceship Factory",
Building::UnitedNations => "United Nations",
Building::UtopiaProject => "Utopia Project",
Building::Cathedral => "Cathedral",
Building::Monastery => "Monastery",
Building::Mosque => "Mosque",
Building::Pagoda => "Pagoda",
}
}
fn from_str(s: &str) -> Self {
match s {
"Palace" => Building::Palace,
"Monument" => Building::Monument,
"Stele" => Building::Stele,
"Granary" => Building::Granary,
"Shrine" => Building::Shrine,
"Pyramid" => Building::Pyramid,
"Temple of Artemis" => Building::TempleOfArtemis,
"Stone Works" => Building::StoneWorks,
"Stonehenge" => Building::Stonehenge,
"Library" => Building::Library,
"Paper Maker" => Building::PaperMaker,
"The Great Library" => Building::TheGreatLibrary,
"Circus" => Building::Circus,
"Water Mill" => Building::WaterMill,
"Floating Gardens" => Building::FloatingGardens,
"Walls" => Building::Walls,
"Walls of Babylon" => Building::WallsOfBabylon,
"The Pyramids" => Building::ThePyramids,
"Mausoleum of Halicarnassus" => Building::MausoleumOfHalicarnassus,
"Barracks" => Building::Barracks,
"Krepost" => Building::Krepost,
"Statue of Zeus" => Building::StatueOfZeus,
"Lighthouse" => Building::Lighthouse,
"The Great Lighthouse" => Building::TheGreatLighthouse,
"Stable" => Building::Stable,
"Circus Maximus" => Building::CircusMaximus,
"Courthouse" => Building::Courthouse,
"Hanging Gardens" => Building::HangingGardens,
"Colosseum" => Building::Colosseum,
"Terracotta Army" => Building::TerracottaArmy,
"Temple" => Building::Temple,
"Burial Tomb" => Building::BurialTomb,
"Mud Pyramid Mosque" => Building::MudPyramidMosque,
"National College" => Building::NationalCollege,
"The Oracle" => Building::TheOracle,
"Amphitheater" => Building::Amphitheater,
"National Epic" => Building::NationalEpic,
"Market" => Building::Market,
"Bazaar" => Building::Bazaar,
"Mint" => Building::Mint,
"Petra" => Building::Petra,
"Aqueduct" => Building::Aqueduct,
"Great Wall" => Building::GreatWall,
"Heroic Epic" => Building::HeroicEpic,
"Colossus" => Building::Colossus,
"Garden" => Building::Garden,
"Hagia Sophia" => Building::HagiaSophia,
"Great Mosque of Djenne" => Building::GreatMosqueOfDjenne,
"Grand Temple" => Building::GrandTemple,
"Chichen Itza" => Building::ChichenItza,
"National Treasury" => Building::NationalTreasury,
"Machu Picchu" => Building::MachuPicchu,
"Workshop" => Building::Workshop,
"Longhouse" => Building::Longhouse,
"Forge" => Building::Forge,
"Harbor" => Building::Harbor,
"University" => Building::University,
"Wat" => Building::Wat,
"Oxford University" => Building::OxfordUniversity,
"Angkor Wat" => Building::AngkorWat,
"Castle" => Building::Castle,
"Mughal Fort" => Building::MughalFort,
"Alhambra" => Building::Alhambra,
"Ironworks" => Building::Ironworks,
"Notre Dame" => Building::NotreDame,
"Armory" => Building::Armory,
"Observatory" => Building::Observatory,
"Opera House" => Building::OperaHouse,
"Ceilidh Hall" => Building::CeilidhHall,
"Sistine Chapel" => Building::SistineChapel,
"Bank" => Building::Bank,
"Satrap's Court" => Building::SatrapsCourt,
"Forbidden Palace" => Building::ForbiddenPalace,
"Theatre" => Building::Theatre,
"Leaning Tower of Pisa" => Building::LeaningTowerOfPisa,
"Himeji Castle" => Building::HimejiCastle,
"Seaport" => Building::Seaport,
"Hermitage" => Building::Hermitage,
"Taj Mahal" => Building::TajMahal,
"Porcelain Tower" => Building::PorcelainTower,
"Windmill" => Building::Windmill,
"Coffee House" => Building::CoffeeHouse,
"Arsenal" => Building::Arsenal,
"Kremlin" => Building::Kremlin,
"Museum" => Building::Museum,
"The Louvre" => Building::TheLouvre,
"Public School" => Building::PublicSchool,
"Factory" => Building::Factory,
"Big Ben" => Building::BigBen,
"Military Academy" => Building::MilitaryAcademy,
"Brandenburg Gate" => Building::BrandenburgGate,
"Hospital" => Building::Hospital,
"Stock Exchange" => Building::StockExchange,
"Hydro Plant" => Building::HydroPlant,
"Stadium" => Building::Stadium,
"Broadcast Tower" => Building::BroadcastTower,
"Eiffel Tower" => Building::EiffelTower,
"Military Base" => Building::MilitaryBase,
"Statue of Liberty" => Building::StatueOfLiberty,
"Neuschwanstein" => Building::Neuschwanstein,
"Research Lab" => Building::ResearchLab,
"Cristo Redentor" => Building::CristoRedentor,
"Medical Lab" => Building::MedicalLab,
"Manhattan Project" => Building::ManhattanProject,
"Pentagon" => Building::Pentagon,
"Solar Plant" => Building::SolarPlant,
"Recycling Center" => Building::RecyclingCenter,
"Sydney Opera House" => Building::SydneyOperaHouse,
"Nuclear Plant" => Building::NuclearPlant,
"Apollo Program" => Building::ApolloProgram,
"CN Tower" => Building::CNTower,
"Bomb Shelter" => Building::BombShelter,
"Hubble Space Telescope" => Building::HubbleSpaceTelescope,
"Spaceship Factory" => Building::SpaceshipFactory,
"United Nations" => Building::UnitedNations,
"Utopia Project" => Building::UtopiaProject,
"Cathedral" => Building::Cathedral,
"Monastery" => Building::Monastery,
"Mosque" => Building::Mosque,
"Pagoda" => Building::Pagoda,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}