use super::EnumStr;
use enum_map::Enum;
use serde::{Deserialize, Serialize};
#[derive(Enum, PartialEq, Eq, Clone, Copy, Hash, Serialize, Deserialize, Debug)]
pub enum Resource {
Cattle,
Sheep,
Deer,
Bananas,
Wheat,
Stone,
Fish,
Bison,
Horses,
Iron,
Coal,
Oil,
Aluminum,
Uranium,
Furs,
Cotton,
Dyes,
Gems,
GoldOre,
Silver,
Incense,
Ivory,
Silk,
Spices,
Wine,
Sugar,
Marble,
Whales,
Pearls,
Jewelry,
Porcelain,
Citrus,
Copper,
Cocoa,
Crab,
Salt,
Truffles,
}
impl EnumStr for Resource {
fn as_str(&self) -> &'static str {
match self {
Resource::Cattle => "Cattle",
Resource::Sheep => "Sheep",
Resource::Deer => "Deer",
Resource::Bananas => "Bananas",
Resource::Wheat => "Wheat",
Resource::Stone => "Stone",
Resource::Fish => "Fish",
Resource::Bison => "Bison",
Resource::Horses => "Horses",
Resource::Iron => "Iron",
Resource::Coal => "Coal",
Resource::Oil => "Oil",
Resource::Aluminum => "Aluminum",
Resource::Uranium => "Uranium",
Resource::Furs => "Furs",
Resource::Cotton => "Cotton",
Resource::Dyes => "Dyes",
Resource::Gems => "Gems",
Resource::GoldOre => "Gold Ore",
Resource::Silver => "Silver",
Resource::Incense => "Incense",
Resource::Ivory => "Ivory",
Resource::Silk => "Silk",
Resource::Spices => "Spices",
Resource::Wine => "Wine",
Resource::Sugar => "Sugar",
Resource::Marble => "Marble",
Resource::Whales => "Whales",
Resource::Pearls => "Pearls",
Resource::Jewelry => "Jewelry",
Resource::Porcelain => "Porcelain",
Resource::Citrus => "Citrus",
Resource::Copper => "Copper",
Resource::Cocoa => "Cocoa",
Resource::Crab => "Crab",
Resource::Salt => "Salt",
Resource::Truffles => "Truffles",
}
}
fn from_str(s: &str) -> Self {
match s {
"Cattle" => Resource::Cattle,
"Sheep" => Resource::Sheep,
"Deer" => Resource::Deer,
"Bananas" => Resource::Bananas,
"Wheat" => Resource::Wheat,
"Stone" => Resource::Stone,
"Fish" => Resource::Fish,
"Bison" => Resource::Bison,
"Horses" => Resource::Horses,
"Iron" => Resource::Iron,
"Coal" => Resource::Coal,
"Oil" => Resource::Oil,
"Aluminum" => Resource::Aluminum,
"Uranium" => Resource::Uranium,
"Furs" => Resource::Furs,
"Cotton" => Resource::Cotton,
"Dyes" => Resource::Dyes,
"Gems" => Resource::Gems,
"Gold Ore" => Resource::GoldOre,
"Silver" => Resource::Silver,
"Incense" => Resource::Incense,
"Ivory" => Resource::Ivory,
"Silk" => Resource::Silk,
"Spices" => Resource::Spices,
"Wine" => Resource::Wine,
"Sugar" => Resource::Sugar,
"Marble" => Resource::Marble,
"Whales" => Resource::Whales,
"Pearls" => Resource::Pearls,
"Jewelry" => Resource::Jewelry,
"Porcelain" => Resource::Porcelain,
"Citrus" => Resource::Citrus,
"Copper" => Resource::Copper,
"Cocoa" => Resource::Cocoa,
"Crab" => Resource::Crab,
"Salt" => Resource::Salt,
"Truffles" => Resource::Truffles,
_ => panic!("Invalid value for {}: {{}}", s),
}
}
}