elseware/src/ship/monster.rs

133 lines
2.0 KiB
Rust
Raw Normal View History

2020-01-31 08:54:23 -08:00
use std::convert::TryFrom;
#[derive(Debug)]
pub enum MonsterParseError {
UnknownMonster(String),
}
#[derive(Debug, Copy, Clone)]
pub enum MonsterType {
2020-02-20 22:56:49 -08:00
Hildebear,
SandRappy,
RagRappy,
Monest,
SavageWolf,
BarbarousWolf,
2020-01-31 08:54:23 -08:00
Booma,
Gobooma,
Gigobooma,
2020-02-20 22:56:49 -08:00
GrassAssassin,
DelLily,
PoisonLily,
NanoDragon,
2020-01-31 08:54:23 -08:00
EvilShark,
PalShark,
GuilShark,
2020-02-20 22:56:49 -08:00
PofuillySlime,
PanArms,
Hidoom,
Migium,
Dubchic,
Gillchic,
Garanz,
SinowBeat,
SinowGold,
Canadine,
RingCanadine,
Canane,
DubchicSwitch,
Delsaber,
ChaosSorcerer,
BeeR,
BeeL,
DarkGunner,
ChaosBringer,
DarkBelra,
Dimenian,
LaDimenian,
SoDimenian,
Bulclaw,
Claw,
Dragon,
GalGryphon,
DeRolLe,
DeRolLeBody,
DeRolLeMine,
VolOptPartA,
VolOptPillar,
VolOptMonitor,
VolOptAmp,
VolOptCore,
VolOptUnused,
VolOpt,
DarkFalz,
DarkFalz1,
DarkFalz2,
DarkFalz3,
Darvant,
UltDarvant,
Olga,
BarbaRay,
GolDragon,
SinowBeril,
SinowSpigell,
Merillias,
Meriltas,
Mericarol,
Merikle,
Mericus,
UlGibbon,
ZolGibbon,
Gibbles,
Gee,
GiGue,
Deldepth,
Delbiter,
Dolmdarl,
Dolmolm,
Morfos,
ReconBox,
Epsilon,
SinowZoa,
SinowZele,
IllGill,
Astark,
SatelliteLizard,
Yowie,
MerissaA,
Girtablulu,
Zu,
Boota,
ZeBoota,
BaBoota,
Dorphon,
Goran,
PyroGoran,
GoranDetonator,
SaintMillion,
Shambertin,
Mothmant,
2020-01-31 08:54:23 -08:00
}
impl TryFrom<&str> for MonsterType {
type Error = MonsterParseError;
fn try_from(monster: &str) -> Result<MonsterType, MonsterParseError> {
match monster {
"Booma" | "Bartle" => Ok(MonsterType::Booma),
"Gobooma" | "Barble" => Ok(MonsterType::Gobooma),
"Gigobooma" | "Tollaw" => Ok(MonsterType::Gigobooma),
// etc...
_ => Err(MonsterParseError::UnknownMonster(monster.to_owned()))
}
}
}