use std::convert::{TryFrom, Into}; pub enum ShieldTypeError { UnknownShield(String) } #[derive(Debug, Copy, Clone, PartialEq)] pub enum ShieldType { Barrier, Shield, CoreShield, GigaShield, SoulBarrier, HardShield, BraveBarrier, SolidShield, FlameBarrier, PlasmaBarrier, FreezeBarrier, PsychicBarrier, GeneralShield, ProtectBarrier, GloriousShield, ImperialBarrier, GuardianShield, DivinityBarrier, UltimateShield, SpiritualShield, CelestialShield, InvisibleGuard, SacredGuard, SPartsver116, SPartsver201, LightRelief, ShieldOfDelsaber, ForceWall, RangerWall, HunterWall, AttributeWall, SecretGear, CombatGear, ProtoRegeneGear, RegenerateGear, RegeneGearAdv, FlowensShield, CustomBarrierveroo, DbsShield, RedRing, TripolicShield, StandstillShield, SafetyHeart, KasamiBracer, GodsShieldSuzaku, GodsShieldGenbu, GodsShieldByakko, GodsShieldSeiryu, HuntersShell, RicosGlasses, RicosEarring, BlueRing, Barrier2, SecureFeet, Barrier3, Barrier4, Barrier5, Barrier6, RestaMerge, AntiMerge, ShiftaMerge, DebandMerge, FoieMerge, GifoieMerge, RafoieMerge, RedMerge, BartaMerge, GibartaMerge, RabartaMerge, BlueMerge, ZondeMerge, GizondeMerge, RazondeMerge, YellowMerge, RecoveryBarrier, AssistBarrier, RedBarrier, BlueBarrier, YellowBarrier, WeaponsGoldShield, BlackGear, WorksGuard, RagolRing, BlueRing2, BlueRing3, BlueRing4, BlueRing5, BlueRing6, BlueRing7, BlueRing8, BlueRing9, GreenRing, GreenRing2, GreenRing3, GreenRing4, GreenRing5, GreenRing6, GreenRing7, GreenRing8, YellowRing, YellowRing2, YellowRing3, YellowRing4, YellowRing5, YellowRing6, YellowRing7, YellowRing8, PurpleRing, PurpleRing2, PurpleRing3, PurpleRing4, PurpleRing5, PurpleRing6, PurpleRing7, PurpleRing8, WhiteRing, WhiteRing2, WhiteRing3, WhiteRing4, WhiteRing5, WhiteRing6, WhiteRing7, WhiteRing8, BlackRing, BlackRing2, BlackRing3, BlackRing4, BlackRing5, BlackRing6, BlackRing7, BlackRing8, WeaponsSilverShield, WeaponsCopperShield, Gratia, TripolicReflector, StrikerPlus, RegenerateGearBP, Rupika, YataMirror, BunnyEars, CatEars, ThreeSeals, GodsShieldkouryu, DfShield, FromTheDepths, DeRolLeShield, HoneycombReflector, Epsiguard, AngelRing, UnionGuard, UnionGuard2, UnionGuard3, UnionGuard4, StinkShield, Unknownb, Genpei, Genpei2, Genpei3, Genpei4, Genpei5, Genpei6, Genpei7, Genpei8, Genpei9, Genpei10, } impl ShieldType { pub fn value(&self) -> [u8; 3] { match self { ShieldType::Barrier => [0x01, 0x02, 0x00], ShieldType::Shield => [0x01, 0x02, 0x01], ShieldType::CoreShield => [0x01, 0x02, 0x02], ShieldType::GigaShield => [0x01, 0x02, 0x03], ShieldType::SoulBarrier => [0x01, 0x02, 0x04], ShieldType::HardShield => [0x01, 0x02, 0x05], ShieldType::BraveBarrier => [0x01, 0x02, 0x06], ShieldType::SolidShield => [0x01, 0x02, 0x07], ShieldType::FlameBarrier => [0x01, 0x02, 0x08], ShieldType::PlasmaBarrier => [0x01, 0x02, 0x09], ShieldType::FreezeBarrier => [0x01, 0x02, 0x0A], ShieldType::PsychicBarrier => [0x01, 0x02, 0x0B], ShieldType::GeneralShield => [0x01, 0x02, 0x0C], ShieldType::ProtectBarrier => [0x01, 0x02, 0x0D], ShieldType::GloriousShield => [0x01, 0x02, 0x0E], ShieldType::ImperialBarrier => [0x01, 0x02, 0x0F], ShieldType::GuardianShield => [0x01, 0x02, 0x10], ShieldType::DivinityBarrier => [0x01, 0x02, 0x11], ShieldType::UltimateShield => [0x01, 0x02, 0x12], ShieldType::SpiritualShield => [0x01, 0x02, 0x13], ShieldType::CelestialShield => [0x01, 0x02, 0x14], ShieldType::InvisibleGuard => [0x01, 0x02, 0x15], ShieldType::SacredGuard => [0x01, 0x02, 0x16], ShieldType::SPartsver116 => [0x01, 0x02, 0x17], ShieldType::SPartsver201 => [0x01, 0x02, 0x18], ShieldType::LightRelief => [0x01, 0x02, 0x19], ShieldType::ShieldOfDelsaber => [0x01, 0x02, 0x1A], ShieldType::ForceWall => [0x01, 0x02, 0x1B], ShieldType::RangerWall => [0x01, 0x02, 0x1C], ShieldType::HunterWall => [0x01, 0x02, 0x1D], ShieldType::AttributeWall => [0x01, 0x02, 0x1E], ShieldType::SecretGear => [0x01, 0x02, 0x1F], ShieldType::CombatGear => [0x01, 0x02, 0x20], ShieldType::ProtoRegeneGear => [0x01, 0x02, 0x21], ShieldType::RegenerateGear => [0x01, 0x02, 0x22], ShieldType::RegeneGearAdv => [0x01, 0x02, 0x23], ShieldType::FlowensShield => [0x01, 0x02, 0x24], ShieldType::CustomBarrierveroo => [0x01, 0x02, 0x25], ShieldType::DbsShield => [0x01, 0x02, 0x26], ShieldType::RedRing => [0x01, 0x02, 0x27], ShieldType::TripolicShield => [0x01, 0x02, 0x28], ShieldType::StandstillShield => [0x01, 0x02, 0x29], ShieldType::SafetyHeart => [0x01, 0x02, 0x2A], ShieldType::KasamiBracer => [0x01, 0x02, 0x2B], ShieldType::GodsShieldSuzaku => [0x01, 0x02, 0x2C], ShieldType::GodsShieldGenbu => [0x01, 0x02, 0x2D], ShieldType::GodsShieldByakko => [0x01, 0x02, 0x2E], ShieldType::GodsShieldSeiryu => [0x01, 0x02, 0x2F], ShieldType::HuntersShell => [0x01, 0x02, 0x30], ShieldType::RicosGlasses => [0x01, 0x02, 0x31], ShieldType::RicosEarring => [0x01, 0x02, 0x32], ShieldType::BlueRing => [0x01, 0x02, 0x33], ShieldType::Barrier2 => [0x01, 0x02, 0x34], ShieldType::SecureFeet => [0x01, 0x02, 0x35], ShieldType::Barrier3 => [0x01, 0x02, 0x36], ShieldType::Barrier4 => [0x01, 0x02, 0x37], ShieldType::Barrier5 => [0x01, 0x02, 0x38], ShieldType::Barrier6 => [0x01, 0x02, 0x39], ShieldType::RestaMerge => [0x01, 0x02, 0x3A], ShieldType::AntiMerge => [0x01, 0x02, 0x3B], ShieldType::ShiftaMerge => [0x01, 0x02, 0x3C], ShieldType::DebandMerge => [0x01, 0x02, 0x3D], ShieldType::FoieMerge => [0x01, 0x02, 0x3E], ShieldType::GifoieMerge => [0x01, 0x02, 0x3F], ShieldType::RafoieMerge => [0x01, 0x02, 0x40], ShieldType::RedMerge => [0x01, 0x02, 0x41], ShieldType::BartaMerge => [0x01, 0x02, 0x42], ShieldType::GibartaMerge => [0x01, 0x02, 0x43], ShieldType::RabartaMerge => [0x01, 0x02, 0x44], ShieldType::BlueMerge => [0x01, 0x02, 0x45], ShieldType::ZondeMerge => [0x01, 0x02, 0x46], ShieldType::GizondeMerge => [0x01, 0x02, 0x47], ShieldType::RazondeMerge => [0x01, 0x02, 0x48], ShieldType::YellowMerge => [0x01, 0x02, 0x49], ShieldType::RecoveryBarrier => [0x01, 0x02, 0x4A], ShieldType::AssistBarrier => [0x01, 0x02, 0x4B], ShieldType::RedBarrier => [0x01, 0x02, 0x4C], ShieldType::BlueBarrier => [0x01, 0x02, 0x4D], ShieldType::YellowBarrier => [0x01, 0x02, 0x4E], ShieldType::WeaponsGoldShield => [0x01, 0x02, 0x4F], ShieldType::BlackGear => [0x01, 0x02, 0x50], ShieldType::WorksGuard => [0x01, 0x02, 0x51], ShieldType::RagolRing => [0x01, 0x02, 0x52], ShieldType::BlueRing2 => [0x01, 0x02, 0x53], ShieldType::BlueRing3 => [0x01, 0x02, 0x54], ShieldType::BlueRing4 => [0x01, 0x02, 0x55], ShieldType::BlueRing5 => [0x01, 0x02, 0x56], ShieldType::BlueRing6 => [0x01, 0x02, 0x57], ShieldType::BlueRing7 => [0x01, 0x02, 0x58], ShieldType::BlueRing8 => [0x01, 0x02, 0x59], ShieldType::BlueRing9 => [0x01, 0x02, 0x5A], ShieldType::GreenRing => [0x01, 0x02, 0x5B], ShieldType::GreenRing2 => [0x01, 0x02, 0x5C], ShieldType::GreenRing3 => [0x01, 0x02, 0x5D], ShieldType::GreenRing4 => [0x01, 0x02, 0x5E], ShieldType::GreenRing5 => [0x01, 0x02, 0x5F], ShieldType::GreenRing6 => [0x01, 0x02, 0x60], ShieldType::GreenRing7 => [0x01, 0x02, 0x61], ShieldType::GreenRing8 => [0x01, 0x02, 0x62], ShieldType::YellowRing => [0x01, 0x02, 0x63], ShieldType::YellowRing2 => [0x01, 0x02, 0x64], ShieldType::YellowRing3 => [0x01, 0x02, 0x65], ShieldType::YellowRing4 => [0x01, 0x02, 0x66], ShieldType::YellowRing5=> [0x01, 0x02, 0x67], ShieldType::YellowRing6 => [0x01, 0x02, 0x68], ShieldType::YellowRing7 => [0x01, 0x02, 0x69], ShieldType::YellowRing8 => [0x01, 0x02, 0x6A], ShieldType::PurpleRing => [0x01, 0x02, 0x6B], ShieldType::PurpleRing2 => [0x01, 0x02, 0x6C], ShieldType::PurpleRing3 => [0x01, 0x02, 0x6D], ShieldType::PurpleRing4 => [0x01, 0x02, 0x6E], ShieldType::PurpleRing5=> [0x01, 0x02, 0x6F], ShieldType::PurpleRing6 => [0x01, 0x02, 0x70], ShieldType::PurpleRing7 => [0x01, 0x02, 0x71], ShieldType::PurpleRing8 => [0x01, 0x02, 0x72], ShieldType::WhiteRing => [0x01, 0x02, 0x73], ShieldType::WhiteRing2 => [0x01, 0x02, 0x74], ShieldType::WhiteRing3 => [0x01, 0x02, 0x75], ShieldType::WhiteRing4 => [0x01, 0x02, 0x76], ShieldType::WhiteRing5 => [0x01, 0x02, 0x77], ShieldType::WhiteRing6=> [0x01, 0x02, 0x78], ShieldType::WhiteRing7 => [0x01, 0x02, 0x79], ShieldType::WhiteRing8 => [0x01, 0x02, 0x7A], ShieldType::BlackRing => [0x01, 0x02, 0x7B], ShieldType::BlackRing2 => [0x01, 0x02, 0x7C], ShieldType::BlackRing3 => [0x01, 0x02, 0x7D], ShieldType::BlackRing4 => [0x01, 0x02, 0x7E], ShieldType::BlackRing5 => [0x01, 0x02, 0x7F], ShieldType::BlackRing6 => [0x01, 0x02, 0x80], ShieldType::BlackRing7 => [0x01, 0x02, 0x81], ShieldType::BlackRing8 => [0x01, 0x02, 0x82], ShieldType::WeaponsSilverShield => [0x01, 0x02, 0x83], ShieldType::WeaponsCopperShield => [0x01, 0x02, 0x84], ShieldType::Gratia => [0x01, 0x02, 0x85], ShieldType::TripolicReflector => [0x01, 0x02, 0x86], ShieldType::StrikerPlus => [0x01, 0x02, 0x87], ShieldType::RegenerateGearBP => [0x01, 0x02, 0x88], ShieldType::Rupika => [0x01, 0x02, 0x89], ShieldType::YataMirror => [0x01, 0x02, 0x8A], ShieldType::BunnyEars => [0x01, 0x02, 0x8B], ShieldType::CatEars => [0x01, 0x02, 0x8C], ShieldType::ThreeSeals => [0x01, 0x02, 0x8D], ShieldType::GodsShieldkouryu => [0x01, 0x02, 0x8E], ShieldType::DfShield => [0x01, 0x02, 0x8F], ShieldType::FromTheDepths => [0x01, 0x02, 0x90], ShieldType::DeRolLeShield => [0x01, 0x02, 0x91], ShieldType::HoneycombReflector => [0x01, 0x02, 0x92], ShieldType::Epsiguard => [0x01, 0x02, 0x93], ShieldType::AngelRing => [0x01, 0x02, 0x94], ShieldType::UnionGuard => [0x01, 0x02, 0x95], ShieldType::UnionGuard2 => [0x01, 0x02, 0x96], ShieldType::UnionGuard3 => [0x01, 0x02, 0x97], ShieldType::UnionGuard4 => [0x01, 0x02, 0x98], ShieldType::StinkShield => [0x01, 0x02, 0x99], ShieldType::Unknownb => [0x01, 0x02, 0x9A], ShieldType::Genpei => [0x01, 0x02, 0x9B], ShieldType::Genpei2 => [0x01, 0x02, 0x9C], ShieldType::Genpei3 => [0x01, 0x02, 0x9D], ShieldType::Genpei4 => [0x01, 0x02, 0x9E], ShieldType::Genpei5 => [0x01, 0x02, 0x9F], ShieldType::Genpei6 => [0x01, 0x02, 0xA0], ShieldType::Genpei7 => [0x01, 0x02, 0xA1], ShieldType::Genpei8 => [0x01, 0x02, 0xA2], ShieldType::Genpei9 => [0x01, 0x02, 0xA3], ShieldType::Genpei10 => [0x01, 0x02, 0xA4], } } } impl TryFrom<&str> for ShieldType { type Error = ShieldTypeError; fn try_from(value: &str) -> Result { match value { "Barrier" => Ok(ShieldType::Barrier), "Shield" => Ok(ShieldType::Shield), "CoreShield" => Ok(ShieldType::CoreShield), "GigaShield" => Ok(ShieldType::GigaShield), "SoulBarrier" => Ok(ShieldType::SoulBarrier), "HardShield" => Ok(ShieldType::HardShield), "BraveBarrier" => Ok(ShieldType::BraveBarrier), "SolidShield" => Ok(ShieldType::SolidShield), "FlameBarrier" => Ok(ShieldType::FlameBarrier), "PlasmaBarrier" => Ok(ShieldType::PlasmaBarrier), "FreezeBarrier" => Ok(ShieldType::FreezeBarrier), "PsychicBarrier" => Ok(ShieldType::PsychicBarrier), "GeneralShield" => Ok(ShieldType::GeneralShield), "ProtectBarrier" => Ok(ShieldType::ProtectBarrier), "GloriousShield" => Ok(ShieldType::GloriousShield), "ImperialBarrier" => Ok(ShieldType::ImperialBarrier), "GuardianShield" => Ok(ShieldType::GuardianShield), "DivinityBarrier" => Ok(ShieldType::DivinityBarrier), "UltimateShield" => Ok(ShieldType::UltimateShield), "SpiritualShield" => Ok(ShieldType::SpiritualShield), "CelestialShield" => Ok(ShieldType::CelestialShield), "InvisibleGuard" => Ok(ShieldType::InvisibleGuard), "SacredGuard" => Ok(ShieldType::SacredGuard), "SPartsver116" => Ok(ShieldType::SPartsver116), "SPartsver201" => Ok(ShieldType::SPartsver201), "LightRelief" => Ok(ShieldType::LightRelief), "ShieldOfDelsaber" => Ok(ShieldType::ShieldOfDelsaber), "ForceWall" => Ok(ShieldType::ForceWall), "RangerWall" => Ok(ShieldType::RangerWall), "HunterWall" => Ok(ShieldType::HunterWall), "AttributeWall" => Ok(ShieldType::AttributeWall), "SecretGear" => Ok(ShieldType::SecretGear), "CombatGear" => Ok(ShieldType::CombatGear), "ProtoRegeneGear" => Ok(ShieldType::ProtoRegeneGear), "RegenerateGear" => Ok(ShieldType::RegenerateGear), "RegeneGearAdv" => Ok(ShieldType::RegeneGearAdv), "FlowensShield" => Ok(ShieldType::FlowensShield), "CustomBarrierveroo" => Ok(ShieldType::CustomBarrierveroo), "DbsShield" => Ok(ShieldType::DbsShield), "RedRing" => Ok(ShieldType::RedRing), "TripolicShield" => Ok(ShieldType::TripolicShield), "StandstillShield" => Ok(ShieldType::StandstillShield), "SafetyHeart" => Ok(ShieldType::SafetyHeart), "KasamiBracer" => Ok(ShieldType::KasamiBracer), "GodsShieldSuzaku" => Ok(ShieldType::GodsShieldSuzaku), "GodsShieldGenbu" => Ok(ShieldType::GodsShieldGenbu), "GodsShieldByakko" => Ok(ShieldType::GodsShieldByakko), "GodsShieldSeiryu" => Ok(ShieldType::GodsShieldSeiryu), "HuntersShell" => Ok(ShieldType::HuntersShell), "RicosGlasses" => Ok(ShieldType::RicosGlasses), "RicosEarring" => Ok(ShieldType::RicosEarring), "BlueRing" => Ok(ShieldType::BlueRing), "Barrier2" => Ok(ShieldType::Barrier2), "SecureFeet" => Ok(ShieldType::SecureFeet), "Barrier3" => Ok(ShieldType::Barrier3), "Barrier4" => Ok(ShieldType::Barrier4), "Barrier5" => Ok(ShieldType::Barrier5), "Barrier6" => Ok(ShieldType::Barrier6), "RestaMerge" => Ok(ShieldType::RestaMerge), "AntiMerge" => Ok(ShieldType::AntiMerge), "ShiftaMerge" => Ok(ShieldType::ShiftaMerge), "DebandMerge" => Ok(ShieldType::DebandMerge), "FoieMerge" => Ok(ShieldType::FoieMerge), "GifoieMerge" => Ok(ShieldType::GifoieMerge), "RafoieMerge" => Ok(ShieldType::RafoieMerge), "RedMerge" => Ok(ShieldType::RedMerge), "BartaMerge" => Ok(ShieldType::BartaMerge), "GibartaMerge" => Ok(ShieldType::GibartaMerge), "RabartaMerge" => Ok(ShieldType::RabartaMerge), "BlueMerge" => Ok(ShieldType::BlueMerge), "ZondeMerge" => Ok(ShieldType::ZondeMerge), "GizondeMerge" => Ok(ShieldType::GizondeMerge), "RazondeMerge" => Ok(ShieldType::RazondeMerge), "YellowMerge" => Ok(ShieldType::YellowMerge), "RecoveryBarrier" => Ok(ShieldType::RecoveryBarrier), "AssistBarrier" => Ok(ShieldType::AssistBarrier), "RedBarrier" => Ok(ShieldType::RedBarrier), "BlueBarrier" => Ok(ShieldType::BlueBarrier), "YellowBarrier" => Ok(ShieldType::YellowBarrier), "WeaponsGoldShield" => Ok(ShieldType::WeaponsGoldShield), "BlackGear" => Ok(ShieldType::BlackGear), "WorksGuard" => Ok(ShieldType::WorksGuard), "RagolRing" => Ok(ShieldType::RagolRing), "BlueRing2" => Ok(ShieldType::BlueRing2), "BlueRing3" => Ok(ShieldType::BlueRing3), "BlueRing4" => Ok(ShieldType::BlueRing4), "BlueRing5" => Ok(ShieldType::BlueRing5), "BlueRing6" => Ok(ShieldType::BlueRing6), "BlueRing7" => Ok(ShieldType::BlueRing7), "BlueRing8" => Ok(ShieldType::BlueRing8), "BlueRing9" => Ok(ShieldType::BlueRing9), "GreenRing" => Ok(ShieldType::GreenRing), "GreenRing2" => Ok(ShieldType::GreenRing2), "GreenRing3" => Ok(ShieldType::GreenRing3), "GreenRing4" => Ok(ShieldType::GreenRing4), "GreenRing5" => Ok(ShieldType::GreenRing5), "GreenRing6" => Ok(ShieldType::GreenRing6), "GreenRing7" => Ok(ShieldType::GreenRing7), "GreenRing8" => Ok(ShieldType::GreenRing8), "YellowRing" => Ok(ShieldType::YellowRing), "YellowRing2" => Ok(ShieldType::YellowRing2), "YellowRing3" => Ok(ShieldType::YellowRing3), "YellowRing4" => Ok(ShieldType::YellowRing4), "YellowRing5" => Ok(ShieldType::YellowRing5), "YellowRing6" => Ok(ShieldType::YellowRing6), "YellowRing7" => Ok(ShieldType::YellowRing7), "YellowRing8" => Ok(ShieldType::YellowRing8), "PurpleRing" => Ok(ShieldType::PurpleRing), "PurpleRing2" => Ok(ShieldType::PurpleRing2), "PurpleRing3" => Ok(ShieldType::PurpleRing3), "PurpleRing4" => Ok(ShieldType::PurpleRing4), "PurpleRing5" => Ok(ShieldType::PurpleRing5), "PurpleRing6" => Ok(ShieldType::PurpleRing6), "PurpleRing7" => Ok(ShieldType::PurpleRing7), "PurpleRing8" => Ok(ShieldType::PurpleRing8), "WhiteRing" => Ok(ShieldType::WhiteRing), "WhiteRing2" => Ok(ShieldType::WhiteRing2), "WhiteRing3" => Ok(ShieldType::WhiteRing3), "WhiteRing4" => Ok(ShieldType::WhiteRing4), "WhiteRing5" => Ok(ShieldType::WhiteRing5), "WhiteRing6" => Ok(ShieldType::WhiteRing6), "WhiteRing7" => Ok(ShieldType::WhiteRing7), "WhiteRing8" => Ok(ShieldType::WhiteRing8), "BlackRing" => Ok(ShieldType::BlackRing), "BlackRing2" => Ok(ShieldType::BlackRing2), "BlackRing3" => Ok(ShieldType::BlackRing3), "BlackRing4" => Ok(ShieldType::BlackRing4), "BlackRing5" => Ok(ShieldType::BlackRing5), "BlackRing6" => Ok(ShieldType::BlackRing6), "BlackRing7" => Ok(ShieldType::BlackRing7), "BlackRing8" => Ok(ShieldType::BlackRing8), "WeaponsSilverShield" => Ok(ShieldType::WeaponsSilverShield), "WeaponsCopperShield" => Ok(ShieldType::WeaponsCopperShield), "Gratia" => Ok(ShieldType::Gratia), "TripolicReflector" => Ok(ShieldType::TripolicReflector), "StrikerPlus" => Ok(ShieldType::StrikerPlus), "RegenerateGearBP" => Ok(ShieldType::RegenerateGearBP), "Rupika" => Ok(ShieldType::Rupika), "YataMirror" => Ok(ShieldType::YataMirror), "BunnyEars" => Ok(ShieldType::BunnyEars), "CatEars" => Ok(ShieldType::CatEars), "ThreeSeals" => Ok(ShieldType::ThreeSeals), "GodsShieldkouryu" => Ok(ShieldType::GodsShieldkouryu), "DfShield" => Ok(ShieldType::DfShield), "FromTheDepths" => Ok(ShieldType::FromTheDepths), "DeRolLeShield" => Ok(ShieldType::DeRolLeShield), "HoneycombReflector" => Ok(ShieldType::HoneycombReflector), "Epsiguard" => Ok(ShieldType::Epsiguard), "AngelRing" => Ok(ShieldType::AngelRing), "UnionGuard" => Ok(ShieldType::UnionGuard), "UnionGuard2" => Ok(ShieldType::UnionGuard2), "UnionGuard3" => Ok(ShieldType::UnionGuard3), "UnionGuard4" => Ok(ShieldType::UnionGuard4), "StinkShield" => Ok(ShieldType::StinkShield), "Unknownb" => Ok(ShieldType::Unknownb), "Genpei" => Ok(ShieldType::Genpei), "Genpei2" => Ok(ShieldType::Genpei2), "Genpei3" => Ok(ShieldType::Genpei3), "Genpei4" => Ok(ShieldType::Genpei4), "Genpei5" => Ok(ShieldType::Genpei5), "Genpei6" => Ok(ShieldType::Genpei6), "Genpei7" => Ok(ShieldType::Genpei7), "Genpei8" => Ok(ShieldType::Genpei8), "Genpei9" => Ok(ShieldType::Genpei9), "Genpei10" => Ok(ShieldType::Genpei10), _ => Err(ShieldTypeError::UnknownShield(value.to_string())) } } } impl Into for ShieldType { fn into(self) -> String { match self { ShieldType::Barrier => "Barrier", ShieldType::Shield => "Shield", ShieldType::CoreShield => "CoreShield", ShieldType::GigaShield => "GigaShield", ShieldType::SoulBarrier => "SoulBarrier", ShieldType::HardShield => "HardShield", ShieldType::BraveBarrier => "BraveBarrier", ShieldType::SolidShield => "SolidShield", ShieldType::FlameBarrier => "FlameBarrier", ShieldType::PlasmaBarrier => "PlasmaBarrier", ShieldType::FreezeBarrier => "FreezeBarrier", ShieldType::PsychicBarrier => "PsychicBarrier", ShieldType::GeneralShield => "GeneralShield", ShieldType::ProtectBarrier => "ProtectBarrier", ShieldType::GloriousShield => "GloriousShield", ShieldType::ImperialBarrier => "ImperialBarrier", ShieldType::GuardianShield => "GuardianShield", ShieldType::DivinityBarrier => "DivinityBarrier", ShieldType::UltimateShield => "UltimateShield", ShieldType::SpiritualShield => "SpiritualShield", ShieldType::CelestialShield => "CelestialShield", ShieldType::InvisibleGuard => "InvisibleGuard", ShieldType::SacredGuard => "SacredGuard", ShieldType::SPartsver116 => "SPartsver116", ShieldType::SPartsver201 => "SPartsver201", ShieldType::LightRelief => "LightRelief", ShieldType::ShieldOfDelsaber => "ShieldOfDelsaber", ShieldType::ForceWall => "ForceWall", ShieldType::RangerWall => "RangerWall", ShieldType::HunterWall => "HunterWall", ShieldType::AttributeWall => "AttributeWall", ShieldType::SecretGear => "SecretGear", ShieldType::CombatGear => "CombatGear", ShieldType::ProtoRegeneGear => "ProtoRegeneGear", ShieldType::RegenerateGear => "RegenerateGear", ShieldType::RegeneGearAdv => "RegeneGearAdv", ShieldType::FlowensShield => "FlowensShield", ShieldType::CustomBarrierveroo => "CustomBarrierveroo", ShieldType::DbsShield => "DbsShield", ShieldType::RedRing => "RedRing", ShieldType::TripolicShield => "TripolicShield", ShieldType::StandstillShield => "StandstillShield", ShieldType::SafetyHeart => "SafetyHeart", ShieldType::KasamiBracer => "KasamiBracer", ShieldType::GodsShieldSuzaku => "GodsShieldSuzaku", ShieldType::GodsShieldGenbu => "GodsShieldGenbu", ShieldType::GodsShieldByakko => "GodsShieldByakko", ShieldType::GodsShieldSeiryu => "GodsShieldSeiryu", ShieldType::HuntersShell => "HuntersShell", ShieldType::RicosGlasses => "RicosGlasses", ShieldType::RicosEarring => "RicosEarring", ShieldType::BlueRing => "BlueRing", ShieldType::Barrier2 => "Barrier2", ShieldType::SecureFeet => "SecureFeet", ShieldType::Barrier3 => "Barrier3", ShieldType::Barrier4 => "Barrier4", ShieldType::Barrier5 => "Barrier5", ShieldType::Barrier6 => "Barrier6", ShieldType::RestaMerge => "RestaMerge", ShieldType::AntiMerge => "AntiMerge", ShieldType::ShiftaMerge => "ShiftaMerge", ShieldType::DebandMerge => "DebandMerge", ShieldType::FoieMerge => "FoieMerge", ShieldType::GifoieMerge => "GifoieMerge", ShieldType::RafoieMerge => "RafoieMerge", ShieldType::RedMerge => "RedMerge", ShieldType::BartaMerge => "BartaMerge", ShieldType::GibartaMerge => "GibartaMerge", ShieldType::RabartaMerge => "RabartaMerge", ShieldType::BlueMerge => "BlueMerge", ShieldType::ZondeMerge => "ZondeMerge", ShieldType::GizondeMerge => "GizondeMerge", ShieldType::RazondeMerge => "RazondeMerge", ShieldType::YellowMerge => "YellowMerge", ShieldType::RecoveryBarrier => "RecoveryBarrier", ShieldType::AssistBarrier => "AssistBarrier", ShieldType::RedBarrier => "RedBarrier", ShieldType::BlueBarrier => "BlueBarrier", ShieldType::YellowBarrier => "YellowBarrier", ShieldType::WeaponsGoldShield => "WeaponsGoldShield", ShieldType::BlackGear => "BlackGear", ShieldType::WorksGuard => "WorksGuard", ShieldType::RagolRing => "RagolRing", ShieldType::BlueRing2 => "BlueRing2", ShieldType::BlueRing3 => "BlueRing3", ShieldType::BlueRing4 => "BlueRing4", ShieldType::BlueRing5 => "BlueRing5", ShieldType::BlueRing6 => "BlueRing6", ShieldType::BlueRing7 => "BlueRing7", ShieldType::BlueRing8 => "BlueRing8", ShieldType::BlueRing9 => "BlueRing9", ShieldType::GreenRing => "GreenRing", ShieldType::GreenRing2 => "GreenRing2", ShieldType::GreenRing3 => "GreenRing3", ShieldType::GreenRing4 => "GreenRing4", ShieldType::GreenRing5 => "GreenRing5", ShieldType::GreenRing6 => "GreenRing6", ShieldType::GreenRing7 => "GreenRing7", ShieldType::GreenRing8 => "GreenRing8", ShieldType::YellowRing => "YellowRing", ShieldType::YellowRing2 => "YellowRing2", ShieldType::YellowRing3 => "YellowRing3", ShieldType::YellowRing4 => "YellowRing4", ShieldType::YellowRing5 => "YellowRing5", ShieldType::YellowRing6 => "YellowRing6", ShieldType::YellowRing7 => "YellowRing7", ShieldType::YellowRing8 => "YellowRing8", ShieldType::PurpleRing => "PurpleRing", ShieldType::PurpleRing2 => "PurpleRing2", ShieldType::PurpleRing3 => "PurpleRing3", ShieldType::PurpleRing4 => "PurpleRing4", ShieldType::PurpleRing5 => "PurpleRing5", ShieldType::PurpleRing6 => "PurpleRing6", ShieldType::PurpleRing7 => "PurpleRing7", ShieldType::PurpleRing8 => "PurpleRing8", ShieldType::WhiteRing => "WhiteRing", ShieldType::WhiteRing2 => "WhiteRing2", ShieldType::WhiteRing3 => "WhiteRing3", ShieldType::WhiteRing4 => "WhiteRing4", ShieldType::WhiteRing5 => "WhiteRing5", ShieldType::WhiteRing6 => "WhiteRing6", ShieldType::WhiteRing7 => "WhiteRing7", ShieldType::WhiteRing8 => "WhiteRing8", ShieldType::BlackRing => "BlackRing", ShieldType::BlackRing2 => "BlackRing2", ShieldType::BlackRing3 => "BlackRing3", ShieldType::BlackRing4 => "BlackRing4", ShieldType::BlackRing5 => "BlackRing5", ShieldType::BlackRing6 => "BlackRing6", ShieldType::BlackRing7 => "BlackRing7", ShieldType::BlackRing8 => "BlackRing8", ShieldType::WeaponsSilverShield => "WeaponsSilverShield", ShieldType::WeaponsCopperShield => "WeaponsCopperShield", ShieldType::Gratia => "Gratia", ShieldType::TripolicReflector => "TripolicReflector", ShieldType::StrikerPlus => "StrikerPlus", ShieldType::RegenerateGearBP => "RegenerateGearBP", ShieldType::Rupika => "Rupika", ShieldType::YataMirror => "YataMirror", ShieldType::BunnyEars => "BunnyEars", ShieldType::CatEars => "CatEars", ShieldType::ThreeSeals => "ThreeSeals", ShieldType::GodsShieldkouryu => "GodsShieldkouryu", ShieldType::DfShield => "DfShield", ShieldType::FromTheDepths => "FromTheDepths", ShieldType::DeRolLeShield => "DeRolLeShield", ShieldType::HoneycombReflector => "HoneycombReflector", ShieldType::Epsiguard => "Epsiguard", ShieldType::AngelRing => "AngelRing", ShieldType::UnionGuard => "UnionGuard", ShieldType::UnionGuard2 => "UnionGuard2", ShieldType::UnionGuard3 => "UnionGuard3", ShieldType::UnionGuard4 => "UnionGuard4", ShieldType::StinkShield => "StinkShield", ShieldType::Unknownb => "Unknownb", ShieldType::Genpei => "Genpei", ShieldType::Genpei2 => "Genpei2", ShieldType::Genpei3 => "Genpei3", ShieldType::Genpei4 => "Genpei4", ShieldType::Genpei5 => "Genpei5", ShieldType::Genpei6 => "Genpei6", ShieldType::Genpei7 => "Genpei7", ShieldType::Genpei8 => "Genpei8", ShieldType::Genpei9 => "Genpei9", ShieldType::Genpei10 => "Genpei10", }.to_string() } } // TODO: TryFrom<&str> done maybe - wilson someone with braincells check // TODO Into ^^ #[derive(Debug, Copy, Clone, PartialEq)] pub struct Shield { pub shield: ShieldType, pub dfp: u8, pub evp: u8, } impl Shield { pub fn as_bytes(&self) -> [u8; 16] { let mut result = [0; 16]; result[0..3].copy_from_slice(&self.shield.value()); // TODO: other attrs result } }