use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Nation {
Spectator,
Babylon,
Greece,
China,
Egypt,
England,
France,
Russia,
Rome,
Arabia,
America,
Japan,
India,
Germany,
TheOttomans,
Korea,
Iroquois,
Persia,
Polynesia,
Siam,
Spain,
Songhai,
Mongolia,
Aztecs,
Inca,
Denmark,
TheHuns,
TheNetherlands,
Sweden,
Austria,
Carthage,
Byzantium,
Celts,
Ethiopia,
TheMaya,
Brussels,
Florence,
Hanoi,
Kabul,
KualaLumpur,
Lhasa,
Milan,
QuebecCity,
CapeTown,
Helsinki,
Manila,
Mogadishu,
RioDeJaneiro,
Sydney,
Ur,
Vancouver,
Venice,
Antwerp,
Genoa,
Kathmandu,
Singapore,
Tyre,
Zanzibar,
Almaty,
Belgrade,
Dublin,
Edinburgh,
MBanzaKongo,
Sidon,
Valletta,
Bratislava,
Cahokia,
Jerusalem,
Barbarians,
}
impl EnumStr for Nation {
fn as_str(&self) -> &'static str {
match self {
Nation::Spectator => "Spectator",
Nation::Babylon => "Babylon",
Nation::Greece => "Greece",
Nation::China => "China",
Nation::Egypt => "Egypt",
Nation::England => "England",
Nation::France => "France",
Nation::Russia => "Russia",
Nation::Rome => "Rome",
Nation::Arabia => "Arabia",
Nation::America => "America",
Nation::Japan => "Japan",
Nation::India => "India",
Nation::Germany => "Germany",
Nation::TheOttomans => "The Ottomans",
Nation::Korea => "Korea",
Nation::Iroquois => "Iroquois",
Nation::Persia => "Persia",
Nation::Polynesia => "Polynesia",
Nation::Siam => "Siam",
Nation::Spain => "Spain",
Nation::Songhai => "Songhai",
Nation::Mongolia => "Mongolia",
Nation::Aztecs => "Aztecs",
Nation::Inca => "Inca",
Nation::Denmark => "Denmark",
Nation::TheHuns => "The Huns",
Nation::TheNetherlands => "The Netherlands",
Nation::Sweden => "Sweden",
Nation::Austria => "Austria",
Nation::Carthage => "Carthage",
Nation::Byzantium => "Byzantium",
Nation::Celts => "Celts",
Nation::Ethiopia => "Ethiopia",
Nation::TheMaya => "The Maya",
Nation::Brussels => "Brussels",
Nation::Florence => "Florence",
Nation::Hanoi => "Hanoi",
Nation::Kabul => "Kabul",
Nation::KualaLumpur => "Kuala Lumpur",
Nation::Lhasa => "Lhasa",
Nation::Milan => "Milan",
Nation::QuebecCity => "Quebec City",
Nation::CapeTown => "Cape Town",
Nation::Helsinki => "Helsinki",
Nation::Manila => "Manila",
Nation::Mogadishu => "Mogadishu",
Nation::RioDeJaneiro => "Rio de Janeiro",
Nation::Sydney => "Sydney",
Nation::Ur => "Ur",
Nation::Vancouver => "Vancouver",
Nation::Venice => "Venice",
Nation::Antwerp => "Antwerp",
Nation::Genoa => "Genoa",
Nation::Kathmandu => "Kathmandu",
Nation::Singapore => "Singapore",
Nation::Tyre => "Tyre",
Nation::Zanzibar => "Zanzibar",
Nation::Almaty => "Almaty",
Nation::Belgrade => "Belgrade",
Nation::Dublin => "Dublin",
Nation::Edinburgh => "Edinburgh",
Nation::MBanzaKongo => "M'Banza-Kongo",
Nation::Sidon => "Sidon",
Nation::Valletta => "Valletta",
Nation::Bratislava => "Bratislava",
Nation::Cahokia => "Cahokia",
Nation::Jerusalem => "Jerusalem",
Nation::Barbarians => "Barbarians",
}
}
fn from_str(s: &str) -> Self {
match s {
"Spectator" => Nation::Spectator,
"Babylon" => Nation::Babylon,
"Greece" => Nation::Greece,
"China" => Nation::China,
"Egypt" => Nation::Egypt,
"England" => Nation::England,
"France" => Nation::France,
"Russia" => Nation::Russia,
"Rome" => Nation::Rome,
"Arabia" => Nation::Arabia,
"America" => Nation::America,
"Japan" => Nation::Japan,
"India" => Nation::India,
"Germany" => Nation::Germany,
"The Ottomans" => Nation::TheOttomans,
"Korea" => Nation::Korea,
"Iroquois" => Nation::Iroquois,
"Persia" => Nation::Persia,
"Polynesia" => Nation::Polynesia,
"Siam" => Nation::Siam,
"Spain" => Nation::Spain,
"Songhai" => Nation::Songhai,
"Mongolia" => Nation::Mongolia,
"Aztecs" => Nation::Aztecs,
"Inca" => Nation::Inca,
"Denmark" => Nation::Denmark,
"The Huns" => Nation::TheHuns,
"The Netherlands" => Nation::TheNetherlands,
"Sweden" => Nation::Sweden,
"Austria" => Nation::Austria,
"Carthage" => Nation::Carthage,
"Byzantium" => Nation::Byzantium,
"Celts" => Nation::Celts,
"Ethiopia" => Nation::Ethiopia,
"The Maya" => Nation::TheMaya,
"Brussels" => Nation::Brussels,
"Florence" => Nation::Florence,
"Hanoi" => Nation::Hanoi,
"Kabul" => Nation::Kabul,
"Kuala Lumpur" => Nation::KualaLumpur,
"Lhasa" => Nation::Lhasa,
"Milan" => Nation::Milan,
"Quebec City" => Nation::QuebecCity,
"Cape Town" => Nation::CapeTown,
"Helsinki" => Nation::Helsinki,
"Manila" => Nation::Manila,
"Mogadishu" => Nation::Mogadishu,
"Rio de Janeiro" => Nation::RioDeJaneiro,
"Sydney" => Nation::Sydney,
"Ur" => Nation::Ur,
"Vancouver" => Nation::Vancouver,
"Venice" => Nation::Venice,
"Antwerp" => Nation::Antwerp,
"Genoa" => Nation::Genoa,
"Kathmandu" => Nation::Kathmandu,
"Singapore" => Nation::Singapore,
"Tyre" => Nation::Tyre,
"Zanzibar" => Nation::Zanzibar,
"Almaty" => Nation::Almaty,
"Belgrade" => Nation::Belgrade,
"Dublin" => Nation::Dublin,
"Edinburgh" => Nation::Edinburgh,
"M'Banza-Kongo" => Nation::MBanzaKongo,
"Sidon" => Nation::Sidon,
"Valletta" => Nation::Valletta,
"Bratislava" => Nation::Bratislava,
"Cahokia" => Nation::Cahokia,
"Jerusalem" => Nation::Jerusalem,
"Barbarians" => Nation::Barbarians,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}