use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum BaseTerrain {
Ocean,
Coast,
Grassland,
Plain,
Tundra,
Desert,
Lake,
Snow,
}
impl EnumStr for BaseTerrain {
fn as_str(&self) -> &'static str {
match self {
BaseTerrain::Ocean => "Ocean",
BaseTerrain::Coast => "Coast",
BaseTerrain::Grassland => "Grassland",
BaseTerrain::Plain => "Plain",
BaseTerrain::Tundra => "Tundra",
BaseTerrain::Desert => "Desert",
BaseTerrain::Lake => "Lake",
BaseTerrain::Snow => "Snow",
}
}
fn from_str(s: &str) -> Self {
match s {
"Ocean" => BaseTerrain::Ocean,
"Coast" => BaseTerrain::Coast,
"Grassland" => BaseTerrain::Grassland,
"Plain" => BaseTerrain::Plain,
"Tundra" => BaseTerrain::Tundra,
"Desert" => BaseTerrain::Desert,
"Lake" => BaseTerrain::Lake,
"Snow" => BaseTerrain::Snow,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}