use strum_macros::{Display, EnumIter, EnumString};
#[derive(Debug, Display, Clone, Copy)]
pub enum Language {
English,
Chinese,
Japanese,
Korean,
Thai,
Taiwanese,
}
impl Language {
pub fn id(&self) -> String {
match self {
Self::English => "en",
Self::Chinese => "cn",
Self::Japanese => "jp",
Self::Korean => "kr",
Self::Thai => "th",
Self::Taiwanese => "tw",
}
.to_string()
}
}
#[derive(EnumString, Debug, Display, EnumIter, PartialEq, Eq)]
pub enum School {
Abydos,
Gehenna,
Hyakkiyako,
Millennium,
Shanhaijing,
Trinity,
RedWinter,
Valkyrie,
Arius,
SRT,
Unknown(String),
}
impl School {
pub fn full_name(&self) -> String {
match self {
Self::Abydos => "Abydos High School",
Self::Gehenna => "Gehenna Academy",
Self::Hyakkiyako => "Hyakkiyako Alliance Academy",
Self::Millennium => "Millennium Science School",
Self::Shanhaijing => "Shanhaijing Senior Secondary School",
Self::Trinity => "Trinity General School",
Self::RedWinter => "Red Winter Federal Academy",
Self::Valkyrie => "Valkyrie Police Academy",
Self::Arius => "Arius Branch School",
Self::SRT => "SRT Special Academy",
Self::Unknown(string) => string.as_ref(),
}
.to_string()
}
}
#[derive(Debug, Display, EnumString, EnumIter, PartialEq, Eq)]
pub enum TacticalRole {
Tanker,
Vehicle,
#[strum(serialize = "DamageDealer", to_string = "Damage Dealer")]
DamageDealer,
Healer,
Supporter,
Unknown(String),
}
#[derive(Debug, Display, EnumString, EnumIter, PartialEq, Eq)]
pub enum Squad {
Main,
Support,
Unknown(String),
}
impl Squad {
pub fn alt_name(&self) -> String {
match self {
Self::Main => "Striker".to_string(),
Self::Support => "Special".to_string(),
Self::Unknown(squad) => squad.to_string(),
}
}
}
#[derive(Debug, Display, EnumString, EnumIter, PartialEq, Eq)]
pub enum Armor {
Unarmed,
#[strum(serialize = "ElasticArmor", to_string = "Elastic Armor")]
ElasticArmor,
#[strum(serialize = "HeavyArmor", to_string = "Heavy Armor")]
HeavyArmor,
#[strum(serialize = "LightArmor", to_string = "Light Armor")]
LightArmor,
Unknown(String),
}
#[derive(Debug, Display, EnumString, EnumIter, PartialEq, Eq)]
pub enum Position {
Front,
Middle,
Back,
Unknown(String),
}
#[derive(Debug, Display, EnumString, EnumIter, PartialEq, Eq)]
pub enum BulletType {
Explosion,
Mystic,
#[strum(serialize = "Pierce")]
Piercing,
Unknown(String),
}
#[derive(Debug, Hash, Eq, PartialEq, EnumIter, EnumString, Display)]
pub enum Club {
#[strum(serialize = "Kohshinjo68", to_string = "Problem Solver 68")]
ProblemSolver68,
#[strum(serialize = "SPTF", to_string = "Super Phenomenon Task Force")]
SuperPhenomenonTaskForce,
#[strum(serialize = "GourmetClub", to_string = "Gourmet Research Society")]
GourmetResearchSociety,
#[strum(serialize = "RemedialClass", to_string = "Make-Up Work Club")]
MakeUpWorkClub,
#[strum(serialize = "Fuuki", to_string = "Prefect Team")]
PrefectTeam,
#[strum(serialize = "Countermeasure", to_string = "Foreclosure Task Force")]
ForeclosureTaskForce,
Veritas,
#[strum(serialize = "CleanNClearing", to_string = "Cleaning & Clearing")]
CleaningAndClearing,
#[strum(serialize = "Meihuayuan", to_string = "Plum Blossom Garden")]
PlumBlossomGarden,
#[strum(serialize = "TrainingClub", to_string = "Athletics Training Club")]
AthleticsTrainingClub,
#[strum(serialize = "NinpoKenkyubu", to_string = "Ninjutsu Research Club")]
NinjutsuResearchClub,
#[strum(serialize = "Justice", to_string = "Justice Task Force")]
JusticeTaskForce,
#[strum(serialize = "GameDev", to_string = "Game Development Club")]
GameDevelopmentClub,
#[strum(serialize = "RedwinterSecretary", to_string = "Red Winter Office")]
RedWinterSecretary,
#[strum(serialize = "HoukagoDessert", to_string = "After-School Sweets Club")]
AfterSchoolSweetsClub,
#[strum(serialize = "EmptyClub", to_string = "Unassigned")]
Unassigned,
#[strum(serialize = "Shugyobu", to_string = "Inner Discipline Club")]
InnerDisciplineClub,
#[strum(serialize = "BookClub", to_string = "Library Committee")]
LibraryCommittee,
#[strum(serialize = "SisterHood", to_string = "Sisterhood")]
Sisterhood,
#[strum(serialize = "RabbitPlatoon", to_string = "RABBIT Squad")]
RABBITSquad,
#[strum(serialize = "AriusSqud", to_string = "Arius Squad")]
AriusSquad,
#[strum(serialize = "Onmyobu", to_string = "Yin-Yang Club")]
YinYangClub,
#[strum(serialize = "TheSeminar", to_string = "Seminar")]
Seminar,
#[strum(serialize = "anzenkyoku", to_string = "Public Safety Bureau")]
PublicSafetyBureau,
#[strum(serialize = "PublicPeaceBureau", to_string = "Public Peace Bureau")]
PublicPeaceBureau,
#[strum(serialize = "Engineer", to_string = "Engineering Club")]
EngineeringClub,
#[strum(serialize = "TrinityVigilance", to_string = "Trinity Vigilante Crew")]
TrinityVigilanteCrew,
#[strum(
serialize = "MatsuriOffice",
to_string = "Festival Operations Department"
)]
FestivalOperationsDepartment,
#[strum(serialize = "Endanbou", to_string = "Chinese Alchemy Study Club")]
ChineseAlchemyStudyClub,
#[strum(serialize = "Class227", to_string = "Spec Ops #227")]
SpecOpsNumber227,
#[strum(serialize = "Emergentology", to_string = "Medical Emergency Club")]
MedicalEmergencyClub,
#[strum(serialize = "FoodService", to_string = "School Lunch Club")]
SchoolLunchClub,
#[strum(serialize = "PandemoniumSociety", to_string = "Pandemonium Society")]
PandemoniumSociety,
#[strum(serialize = "KnightsHospitaller", to_string = "Remedial Knights")]
RemedialKnights,
#[strum(serialize = "TeaParty", to_string = "Tea Party")]
TeaParty,
#[strum(serialize = "HotSpringsDepartment", to_string = "Hot Spring Club")]
HotSpringsClub,
Unknown(String),
}
#[derive(Debug, EnumString, Display, EnumIter, PartialEq, Eq)]
pub enum WeaponType {
AR,
FT,
SR,
MG,
MT,
HG,
SMG,
RL,
SG,
GL,
RG,
Cannon,
None,
Unknown(String),
}
impl WeaponType {
pub fn full_name(&self) -> String {
match self {
Self::AR => "Assault Rifle",
Self::GL => "Grenade Launcher",
Self::FT => "Flamethrower",
Self::HG => "Handgun",
Self::MG => "Machine Gun",
Self::MT => "Mortar",
Self::RG => "Railgun",
Self::RL => "Rocket Launcher",
Self::SG => "Shotgun",
Self::SMG => "Submachine Gun",
Self::SR => "Sniper Rifle",
Self::Cannon => "Cannon",
Self::None => "No Weapon",
Self::Unknown(string) => string,
}
.to_string()
}
}