feat: add shadowbringers races and clans

This commit is contained in:
Anna 2019-05-28 20:49:17 -04:00
parent 1e635376f7
commit ac720a1bf7
2 changed files with 38 additions and 2 deletions

View File

@ -18,6 +18,9 @@ pub enum Clan {
// Elezen // Elezen
Duskwight, Duskwight,
Wildwood, Wildwood,
// Hrothgar
Helion,
TheLost,
// Hyur // Hyur
Highlander, Highlander,
Midlander, Midlander,
@ -30,15 +33,20 @@ pub enum Clan {
// Roegadyn // Roegadyn
Hellsguard, Hellsguard,
SeaWolf, SeaWolf,
// Viera
Rava,
Veena,
} }
impl Clan { impl Clan {
#[cfg(feature = "all_const")] #[cfg(feature = "all_const")]
pub const ALL: [Clan; 12] = [ pub const ALL: [Clan; 16] = [
Clan::Raen, Clan::Raen,
Clan::Xaela, Clan::Xaela,
Clan::Duskwight, Clan::Duskwight,
Clan::Wildwood, Clan::Wildwood,
Clan::Helion,
Clan::TheLost,
Clan::Highlander, Clan::Highlander,
Clan::Midlander, Clan::Midlander,
Clan::Dunesfolk, Clan::Dunesfolk,
@ -47,6 +55,8 @@ impl Clan {
Clan::SeekerOfTheSun, Clan::SeekerOfTheSun,
Clan::Hellsguard, Clan::Hellsguard,
Clan::SeaWolf, Clan::SeaWolf,
Clan::Rava,
Clan::Veena,
]; ];
/// Returns the string variant of this world. /// Returns the string variant of this world.
@ -56,6 +66,8 @@ impl Clan {
Clan::Xaela => "Xaela", Clan::Xaela => "Xaela",
Clan::Duskwight => "Duskwight", Clan::Duskwight => "Duskwight",
Clan::Wildwood => "Wildwood", Clan::Wildwood => "Wildwood",
Clan::Helion => "Helion",
Clan::TheLost => "TheLost",
Clan::Highlander => "Highlander", Clan::Highlander => "Highlander",
Clan::Midlander => "Midlander", Clan::Midlander => "Midlander",
Clan::Dunesfolk => "Dunesfolk", Clan::Dunesfolk => "Dunesfolk",
@ -64,6 +76,8 @@ impl Clan {
Clan::SeekerOfTheSun => "SeekerOfTheSun", Clan::SeekerOfTheSun => "SeekerOfTheSun",
Clan::Hellsguard => "Hellsguard", Clan::Hellsguard => "Hellsguard",
Clan::SeaWolf => "SeaWolf", Clan::SeaWolf => "SeaWolf",
Clan::Rava => "Rava",
Clan::Veena => "Veena",
} }
} }
@ -73,6 +87,8 @@ impl Clan {
Clan::Xaela => "Xaela", Clan::Xaela => "Xaela",
Clan::Duskwight => "Duskwight", Clan::Duskwight => "Duskwight",
Clan::Wildwood => "Wildwood", Clan::Wildwood => "Wildwood",
Clan::Helion => "Helion",
Clan::TheLost => "The Lost",
Clan::Highlander => "Highlander", Clan::Highlander => "Highlander",
Clan::Midlander => "Midlander", Clan::Midlander => "Midlander",
Clan::Dunesfolk => "Dunesfolk", Clan::Dunesfolk => "Dunesfolk",
@ -81,6 +97,8 @@ impl Clan {
Clan::SeekerOfTheSun => "Seeker of the Sun", Clan::SeekerOfTheSun => "Seeker of the Sun",
Clan::Hellsguard => "Hellsguard", Clan::Hellsguard => "Hellsguard",
Clan::SeaWolf => "Sea Wolf", Clan::SeaWolf => "Sea Wolf",
Clan::Rava => "Rava",
Clan::Veena => "Veena",
} }
} }
@ -89,10 +107,12 @@ impl Clan {
match *self { match *self {
Clan::Raen | Clan::Xaela => Race::AuRa, Clan::Raen | Clan::Xaela => Race::AuRa,
Clan::Duskwight | Clan::Wildwood => Race::Elezen, Clan::Duskwight | Clan::Wildwood => Race::Elezen,
Clan::Helion | Clan::TheLost => Race::Hrothgar,
Clan::Highlander | Clan::Midlander => Race::Hyur, Clan::Highlander | Clan::Midlander => Race::Hyur,
Clan::Dunesfolk | Clan::Plainsfolk => Race::Lalafell, Clan::Dunesfolk | Clan::Plainsfolk => Race::Lalafell,
Clan::KeeperOfTheMoon | Clan::SeekerOfTheSun => Race::Miqote, Clan::KeeperOfTheMoon | Clan::SeekerOfTheSun => Race::Miqote,
Clan::Hellsguard | Clan::SeaWolf => Race::Roegadyn, Clan::Hellsguard | Clan::SeaWolf => Race::Roegadyn,
Clan::Rava | Clan::Veena => Race::Viera,
} }
} }
} }
@ -109,6 +129,8 @@ impl FromStr for Clan {
"xaela" => Clan::Xaela, "xaela" => Clan::Xaela,
"duskwight" => Clan::Duskwight, "duskwight" => Clan::Duskwight,
"wildwood" => Clan::Wildwood, "wildwood" => Clan::Wildwood,
"helion" => Clan::Helion,
"thelost" | "the lost" => Clan::TheLost,
"highlander" => Clan::Highlander, "highlander" => Clan::Highlander,
"midlander" => Clan::Midlander, "midlander" => Clan::Midlander,
"dunesfolk" => Clan::Dunesfolk, "dunesfolk" => Clan::Dunesfolk,
@ -117,6 +139,8 @@ impl FromStr for Clan {
"seekerofthesun" | "seeker of the sun" => Clan::SeekerOfTheSun, "seekerofthesun" | "seeker of the sun" => Clan::SeekerOfTheSun,
"hellsguard" => Clan::Hellsguard, "hellsguard" => Clan::Hellsguard,
"seawolf" | "sea wolf" => Clan::SeaWolf, "seawolf" | "sea wolf" => Clan::SeaWolf,
"rava" => Clan::Rava,
"veena" => Clan::Veena,
_ => return Err(UnknownVariant("Clan", s.into())) _ => return Err(UnknownVariant("Clan", s.into()))
}; };

View File

@ -14,21 +14,25 @@ use std::str::FromStr;
pub enum Race { pub enum Race {
AuRa, AuRa,
Elezen, Elezen,
Hrothgar,
Hyur, Hyur,
Lalafell, Lalafell,
Miqote, Miqote,
Roegadyn, Roegadyn,
Viera,
} }
impl Race { impl Race {
#[cfg(feature = "all_const")] #[cfg(feature = "all_const")]
pub const ALL: [Race; 6] = [ pub const ALL: [Race; 8] = [
Race::AuRa, Race::AuRa,
Race::Elezen, Race::Elezen,
Race::Hrothgar,
Race::Hyur, Race::Hyur,
Race::Lalafell, Race::Lalafell,
Race::Miqote, Race::Miqote,
Race::Roegadyn, Race::Roegadyn,
Race::Viera,
]; ];
/// Returns the string variant of this world. /// Returns the string variant of this world.
@ -36,10 +40,12 @@ impl Race {
match *self { match *self {
Race::AuRa => "AuRa", Race::AuRa => "AuRa",
Race::Elezen => "Elezen", Race::Elezen => "Elezen",
Race::Hrothgar => "Hrothgar",
Race::Hyur => "Hyur", Race::Hyur => "Hyur",
Race::Lalafell => "Lalafell", Race::Lalafell => "Lalafell",
Race::Miqote => "Miqote", Race::Miqote => "Miqote",
Race::Roegadyn => "Roegadyn", Race::Roegadyn => "Roegadyn",
Race::Viera => "Viera",
} }
} }
@ -47,10 +53,12 @@ impl Race {
match *self { match *self {
Race::AuRa => "Au Ra", Race::AuRa => "Au Ra",
Race::Elezen => "Elezen", Race::Elezen => "Elezen",
Race::Hrothgar => "Hrothgar",
Race::Hyur => "Hyur", Race::Hyur => "Hyur",
Race::Lalafell => "Lalafell", Race::Lalafell => "Lalafell",
Race::Miqote => "Miqo'te", Race::Miqote => "Miqo'te",
Race::Roegadyn => "Roegadyn", Race::Roegadyn => "Roegadyn",
Race::Viera => "Viera",
} }
} }
@ -59,10 +67,12 @@ impl Race {
match *self { match *self {
Race::AuRa => [Clan::Raen, Clan::Xaela], Race::AuRa => [Clan::Raen, Clan::Xaela],
Race::Elezen => [Clan::Duskwight, Clan::Wildwood], Race::Elezen => [Clan::Duskwight, Clan::Wildwood],
Race::Hrothgar => [Clan::Helion, Clan::TheLost],
Race::Hyur => [Clan::Highlander, Clan::Midlander], Race::Hyur => [Clan::Highlander, Clan::Midlander],
Race::Lalafell => [Clan::Dunesfolk, Clan::Plainsfolk], Race::Lalafell => [Clan::Dunesfolk, Clan::Plainsfolk],
Race::Miqote => [Clan::KeeperOfTheMoon, Clan::SeekerOfTheSun], Race::Miqote => [Clan::KeeperOfTheMoon, Clan::SeekerOfTheSun],
Race::Roegadyn => [Clan::Hellsguard, Clan::SeaWolf], Race::Roegadyn => [Clan::Hellsguard, Clan::SeaWolf],
Race::Viera => [Clan::Rava, Clan::Veena],
} }
} }
} }
@ -77,10 +87,12 @@ impl FromStr for Race {
let world = match s.to_lowercase().as_str() { let world = match s.to_lowercase().as_str() {
"aura" | "au ra" => Race::AuRa, "aura" | "au ra" => Race::AuRa,
"elezen" => Race::Elezen, "elezen" => Race::Elezen,
"hrothgar" => Race::Hrothgar,
"hyur" => Race::Hyur, "hyur" => Race::Hyur,
"lalafell" => Race::Lalafell, "lalafell" => Race::Lalafell,
"miqote" | "miqo'te" => Race::Miqote, "miqote" | "miqo'te" => Race::Miqote,
"roegadyn" => Race::Roegadyn, "roegadyn" => Race::Roegadyn,
"viera" => Race::Viera,
_ => return Err(UnknownVariant("Race", s.into())) _ => return Err(UnknownVariant("Race", s.into()))
}; };