spring_ai_rs/ai_interface/callback/unit_def/kind/
arm.rs

1use crate::ai_interface::callback::unit_def::{kind::base::UnitDefKind, UnitDef};
2
3#[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
4pub enum Arm {
5    // Commander
6    Commander,
7    WindTurbine,
8    Solar,
9    MetalStorage,
10    EnergyStorage,
11    MetalExtractor,
12    EnergyConverter,
13    BotLab,
14    VehiclePlant,
15    AirPlant,
16    HovercraftPlatform,
17    Camera,
18    Radar,
19    Teeth,
20    LightLaserTower,
21    LightAntiAir,
22    FloatingLightAntiAir,
23    TorpedoLauncher,
24    UnderwaterMetalStorage,
25    UnderwaterEnergyStorage,
26    NavalEnergyConverter,
27    Shipyard,
28    TidalGenerator,
29    FloatingTeeth,
30    FloatingRadar,
31    FloatingHovercraftPlatform,
32    OffshoreTorpedoLauncher,
33    // T1 Air Plant
34    T1AirConstructor,
35    T1AirScout,
36    T1Fighter,
37    T1Bomber,
38    LightParalyzerDrone,
39    T1AirTransport,
40    // T1 Air Constructor
41    AdvancedSolar,
42    GeothermalPowerplant,
43    ArmedMetalExtractor,
44    AircraftRepairPad,
45    UnderwaterAdvancedGeothermalPowerplant,
46    AdvancedAircraftPlant,
47    ConstructionTurret,
48    AreaControlLaserTower,
49    LightningTurret,
50    MediumRangeAntiAir,
51    LaserTurret,
52    AreaControlPlasmaArtillery,
53    PopUpAntiAirMissileBattery,
54    RadarJammer,
55    AntiRadar,
56    // T2 Air Plant
57    T2AirConstructor,
58    RadarSonarAircraft,
59    StealthFighter,
60    Gunship,
61    AtomicBomber,
62    StrategicBomber,
63    TorpedoBomber,
64    HeavyTransport,
65    RapidAssaultGunship,
66    EMPBomber,
67    // T2 Air Constructor
68    FusionReactor,
69    AdvancedFusionReactor,
70    CloakedFusionReactor,
71    AdvancedGeothermalPowerplant,
72    GeothermalWeapon,
73    Unknown0,
74    AdvancedMetalExtractor,
75    AdvancedArmoredMetalExtractor,
76    WaterAircraftRepairPad,
77    HardenedEnergyStorage,
78    HardenedMetalStorage,
79    AdvancedRadar,
80    LongRangeJammer,
81    FortificationWall,
82    AdvancedEnergyConverter,
83    IntrusionDetector,
84    PlasmaDeflector,
85    EnergyWeapon,
86    RadarTargeting,
87    PopUpBattery,
88    PopUpPlasmaArtillery,
89    AntiAirFlak,
90    LongRangeAntiAir,
91    SeaplanePlatform,
92    EMPMissileLauncher,
93    TacticalMissileLauncher,
94    NuclearSilo,
95    AntiNukeLauncher,
96    DecoyFusionReactor,
97    LongRangePlasmaCannon,
98    RapidFireLongRangePlasmaCannon,
99    ExperimentalGantry,
100    TachyonAccelerator,
101    // T1 Bot Lab
102    T1BotConstructor,
103    T1RessurectionBot,
104    FastInfantryBot,
105    RocketBot,
106    LightPlasmaBot,
107    AmphibiousAntiAirBot,
108    // T1 Bot Constructor
109    AdvancedBotLab,
110    // T2 Bot Lab
111    T2BotConstructor,
112    FastAssaultBot,
113    AmphibiousBot,
114    HeavilyArmoredAssaultBot,
115    ArmoredAssaultBot,
116    SpiderBot,
117    MortarBot,
118    CrawlingBomb,
119    HeavyRocketBot,
120    AdvancedCrawlingBomb,
121    DecoyCommander,
122    RadarBot,
123    SpyBot,
124    StealthBot,
125    CombatEngineer,
126    JammerBot,
127    HeavyAntiAir,
128    // Stealth Bot
129    Unknown1,
130    // T2 Bot Constructor
131    // T1 Vehicle Plant
132    T1VehicleConstructor,
133    AmphibiousConstructor,
134    Minelayer,
135    LightScoutVehicle,
136    LightTank,
137    LightAmphibiousTank,
138    MediumAssaultTank,
139    LightMobileArtillery,
140    MissileTruck,
141    AntiSwarmTank,
142    // T1 Minelayer
143    LightMine,
144    MediumMine,
145    HeavyMine,
146    // T1 Vehicle Constructor
147    AdvancedVehiclePlant,
148    // T2 Vehicle Plant
149    T2VehicleConstructor,
150    RadarJammerVehicle,
151    HeavyAssaultTank,
152    StealthyRocketLauncher,
153    HeavyMissileTank,
154    MobileArtilleryTank,
155    HeavyArtilleryTank,
156    VeryHeavyAssaultTank,
157    MediumAmphibiousTank,
158    VeryHeavyAmphibiousTank,
159    AntiAirFlakTank,
160    AntiNukeTank,
161    RadarVehicle,
162    // Experimental Gantry
163    MobileHeavyTurretExperimental,
164    AllTerrainAssaultExperimental,
165    AssaultBotExperimental,
166    AmphibiousSiegeExperimental,
167    HeavyRocketExperimental,
168    HeavyLaserHovertankExperimental,
169    // T1 Hovercraft Plant
170    T1HovercraftConstructor,
171    FastAttackHovertank,
172    Hovertank,
173    AssaultHovertank,
174    RocketHovertank,
175    AntiAirHovertank,
176    // T1 Hovercraft Constructor
177    NavalConstructionTurret,
178    AmphibiousComplex,
179    FloatingHeavyLaserTower,
180    AdvancedShipyard,
181    UnderwaterGeothermalPowerplant,
182    // T1 Amphibious Constructor
183    PopUpTorpedoLauncher,
184    // T1 Shipyard
185    T1ShipConstructor,
186    RessurectionSub,
187    LightGunBoat,
188    MissileCorvette,
189    AssaultFrigate,
190    Destroyer,
191    Sub,
192    // T1 Ship Constructor
193    // T2 Shipyard
194    T2ShipConstructor,
195    NavalEngineer,
196    Cruiser,
197    FastAssaultSubmarine,
198    LongRangeBattleSubmarine,
199    AntiAirShip,
200    RadarJammerShip,
201    AircraftCarrier,
202    Battleship,
203    CruiseMissileShip,
204    Flagship,
205    // Naval Engineer
206    FloatingHeavyMine,
207    // T2 Ship Constructor
208    UnderwaterExperimentalGantry,
209    UnderwaterFusionReactor,
210    UnderwaterMetalConverter,
211    UnderwaterEnergyConverter,
212    AdvancedSonar,
213    NavalAdvancedRadarTargeting,
214    AdvancedTorpedoLauncher,
215    NavalAntiAirGun,
216    FloatingMultiweaponPlatform,
217    // T1 Seaplane Plant
218    SeaplaneConstructor,
219    SeaplaneGunship,
220    SeaplaneBomber,
221    SeaplaneTorpedoGunship,
222    SeaplaneFighter,
223    SeaplaneRadarSonar,
224    // T1 Seaplane Constructor
225    Unknown,
226}
227
228impl PartialEq<Arm> for UnitDef {
229    fn eq(&self, other: &Arm) -> bool {
230        *other == self.kind().unwrap_or(UnitDefKind::Unknown)
231    }
232}
233
234impl PartialEq<UnitDef> for Arm {
235    fn eq(&self, other: &UnitDef) -> bool {
236        other.kind().unwrap_or(UnitDefKind::Unknown) == *self
237    }
238}
239
240impl PartialEq<Arm> for UnitDefKind {
241    fn eq(&self, other: &Arm) -> bool {
242        other == self
243    }
244}
245
246impl PartialEq<UnitDefKind> for Arm {
247    fn eq(&self, other: &UnitDefKind) -> bool {
248        match other {
249            UnitDefKind::ArmCommander => *self == Self::Commander,
250            UnitDefKind::ArmWindTurbine => *self == Self::WindTurbine,
251            UnitDefKind::ArmSolar => *self == Self::Solar,
252            UnitDefKind::ArmMetalStorage => *self == Self::MetalStorage,
253            UnitDefKind::ArmEnergyStorage => *self == Self::EnergyStorage,
254            UnitDefKind::ArmMetalExtractor => *self == Self::MetalExtractor,
255            UnitDefKind::ArmEnergyConverter => *self == Self::EnergyConverter,
256            UnitDefKind::ArmBotLab => *self == Self::BotLab,
257            UnitDefKind::ArmVehiclePlant => *self == Self::VehiclePlant,
258            UnitDefKind::ArmAirPlant => *self == Self::AirPlant,
259            UnitDefKind::ArmHovercraftPlatform => *self == Self::HovercraftPlatform,
260            UnitDefKind::ArmCamera => *self == Self::Camera,
261            UnitDefKind::ArmRadar => *self == Self::Radar,
262            UnitDefKind::ArmTeeth => *self == Self::Teeth,
263            UnitDefKind::ArmLightLaserTower => *self == Self::LightLaserTower,
264            UnitDefKind::ArmLightAntiAir => *self == Self::LightAntiAir,
265            UnitDefKind::ArmFloatingLightAntiAir => *self == Self::FloatingLightAntiAir,
266            UnitDefKind::ArmTorpedoLauncher => *self == Self::TorpedoLauncher,
267            UnitDefKind::ArmUnderwaterMetalStorage => *self == Self::UnderwaterMetalStorage,
268            UnitDefKind::ArmUnderwaterEnergyStorage => *self == Self::UnderwaterEnergyStorage,
269            UnitDefKind::ArmNavalEnergyConverter => *self == Self::NavalEnergyConverter,
270            UnitDefKind::ArmShipyard => *self == Self::Shipyard,
271            UnitDefKind::ArmTidalGenerator => *self == Self::TidalGenerator,
272            UnitDefKind::ArmFloatingTeeth => *self == Self::FloatingTeeth,
273            UnitDefKind::ArmFloatingRadar => *self == Self::FloatingRadar,
274            UnitDefKind::ArmFloatingHovercraftPlatform => *self == Self::FloatingHovercraftPlatform,
275            UnitDefKind::ArmOffshoreTorpedoLauncher => *self == Self::OffshoreTorpedoLauncher,
276            UnitDefKind::ArmT1AirConstructor => *self == Self::T1AirConstructor,
277            UnitDefKind::ArmT1AirScout => *self == Self::T1AirScout,
278            UnitDefKind::ArmT1Fighter => *self == Self::T1Fighter,
279            UnitDefKind::ArmT1Bomber => *self == Self::T1Bomber,
280            UnitDefKind::ArmLightParalyzerDrone => *self == Self::LightParalyzerDrone,
281            UnitDefKind::ArmT1AirTransport => *self == Self::T1AirTransport,
282            UnitDefKind::ArmAdvancedSolar => *self == Self::AdvancedSolar,
283            UnitDefKind::ArmGeothermalPowerplant => *self == Self::GeothermalPowerplant,
284            UnitDefKind::ArmArmedMetalExtractor => *self == Self::ArmedMetalExtractor,
285            UnitDefKind::ArmAircraftRepairPad => *self == Self::AircraftRepairPad,
286            UnitDefKind::ArmUnderwaterAdvancedGeothermalPowerplant => {
287                *self == Self::UnderwaterAdvancedGeothermalPowerplant
288            }
289            UnitDefKind::ArmAdvancedAircraftPlant => *self == Self::AdvancedAircraftPlant,
290            UnitDefKind::ArmConstructionTurret => *self == Self::ConstructionTurret,
291            UnitDefKind::ArmAreaControlLaserTower => *self == Self::AreaControlLaserTower,
292            UnitDefKind::ArmLightningTurret => *self == Self::LightningTurret,
293            UnitDefKind::ArmMediumRangeAntiAir => *self == Self::MediumRangeAntiAir,
294            UnitDefKind::ArmLaserTurret => *self == Self::LaserTurret,
295            UnitDefKind::ArmAreaControlPlasmaArtillery => *self == Self::AreaControlPlasmaArtillery,
296            UnitDefKind::ArmPopUpAntiAirMissileBattery => *self == Self::PopUpAntiAirMissileBattery,
297            UnitDefKind::ArmRadarJammer => *self == Self::RadarJammer,
298            UnitDefKind::ArmAntiRadar => *self == Self::AntiRadar,
299            UnitDefKind::ArmT2AirConstructor => *self == Self::T2AirConstructor,
300            UnitDefKind::ArmRadarSonarAircraft => *self == Self::RadarSonarAircraft,
301            UnitDefKind::ArmStealthFighter => *self == Self::StealthFighter,
302            UnitDefKind::ArmGunship => *self == Self::Gunship,
303            UnitDefKind::ArmAtomicBomber => *self == Self::AtomicBomber,
304            UnitDefKind::ArmStrategicBomber => *self == Self::StrategicBomber,
305            UnitDefKind::ArmTorpedoBomber => *self == Self::TorpedoBomber,
306            UnitDefKind::ArmRapidAssaultGunship => *self == Self::RapidAssaultGunship,
307            UnitDefKind::ArmEMPBomber => *self == Self::EMPBomber,
308            UnitDefKind::ArmHeavyTransport => *self == Self::HeavyTransport,
309            UnitDefKind::ArmFusionReactor => *self == Self::FusionReactor,
310            UnitDefKind::ArmAdvancedFusionReactor => *self == Self::AdvancedFusionReactor,
311            UnitDefKind::ArmCloakedFusionReactor => *self == Self::CloakedFusionReactor,
312            UnitDefKind::ArmAdvancedGeothermalPowerplant => {
313                *self == Self::AdvancedGeothermalPowerplant
314            }
315            UnitDefKind::ArmGeothermalWeapon => *self == Self::GeothermalWeapon,
316            UnitDefKind::ArmAdvancedMetalExtractor => *self == Self::AdvancedMetalExtractor,
317            UnitDefKind::ArmAdvancedArmoredMetalExtractor => {
318                *self == Self::AdvancedArmoredMetalExtractor
319            }
320            UnitDefKind::ArmWaterAircraftRepairPad => *self == Self::WaterAircraftRepairPad,
321            UnitDefKind::ArmHardenedEnergyStorage => *self == Self::HardenedEnergyStorage,
322            UnitDefKind::ArmHardenedMetalStorage => *self == Self::HardenedMetalStorage,
323            UnitDefKind::ArmAdvancedRadar => *self == Self::AdvancedRadar,
324            UnitDefKind::ArmLongRangeJammer => *self == Self::LongRangeJammer,
325            UnitDefKind::ArmFortificationWall => *self == Self::FortificationWall,
326            UnitDefKind::ArmAdvancedEnergyConverter => *self == Self::AdvancedEnergyConverter,
327            UnitDefKind::ArmIntrusionDetector => *self == Self::IntrusionDetector,
328            UnitDefKind::ArmPlasmaDeflector => *self == Self::PlasmaDeflector,
329            UnitDefKind::ArmEnergyWeapon => *self == Self::EnergyWeapon,
330            UnitDefKind::ArmRadarTargeting => *self == Self::RadarTargeting,
331            UnitDefKind::ArmPopUpBattery => *self == Self::PopUpBattery,
332            UnitDefKind::ArmPopUpPlasmaArtillery => *self == Self::PopUpPlasmaArtillery,
333            UnitDefKind::ArmAntiAirFlak => *self == Self::AntiAirFlak,
334            UnitDefKind::ArmLongRangeAntiAir => *self == Self::LongRangeAntiAir,
335            UnitDefKind::ArmSeaplanePlatform => *self == Self::SeaplanePlatform,
336            UnitDefKind::ArmTacticalMissileLauncher => *self == Self::TacticalMissileLauncher,
337            UnitDefKind::ArmNuclearSilo => *self == Self::NuclearSilo,
338            UnitDefKind::ArmAntiNukeLauncher => *self == Self::AntiNukeLauncher,
339            UnitDefKind::ArmDecoyFusionReactor => *self == Self::DecoyFusionReactor,
340            UnitDefKind::ArmLongRangePlasmaCannon => *self == Self::LongRangePlasmaCannon,
341            UnitDefKind::ArmRapidFireLongRangePlasmaCannon => {
342                *self == Self::RapidFireLongRangePlasmaCannon
343            }
344            UnitDefKind::ArmExperimentalGantry => *self == Self::ExperimentalGantry,
345            UnitDefKind::ArmTachyonAccelerator => *self == Self::TachyonAccelerator,
346            UnitDefKind::ArmEMPMissileLauncher => *self == Self::EMPMissileLauncher,
347            UnitDefKind::ArmT1BotConstructor => *self == Self::T1BotConstructor,
348            UnitDefKind::ArmT1RessurectionBot => *self == Self::T1RessurectionBot,
349            UnitDefKind::ArmFastInfantryBot => *self == Self::FastInfantryBot,
350            UnitDefKind::ArmRocketBot => *self == Self::RocketBot,
351            UnitDefKind::ArmLightPlasmaBot => *self == Self::LightPlasmaBot,
352            UnitDefKind::ArmAmphibiousAntiAirBot => *self == Self::AmphibiousAntiAirBot,
353            UnitDefKind::ArmAdvancedBotLab => *self == Self::AdvancedBotLab,
354            UnitDefKind::ArmT2BotConstructor => *self == Self::T2BotConstructor,
355            UnitDefKind::ArmFastAssaultBot => *self == Self::FastAssaultBot,
356            UnitDefKind::ArmAmphibiousBot => *self == Self::AmphibiousBot,
357            UnitDefKind::ArmHeavilyArmoredAssaultBot => *self == Self::HeavilyArmoredAssaultBot,
358            UnitDefKind::ArmArmoredAssaultBot => *self == Self::ArmoredAssaultBot,
359            UnitDefKind::ArmSpiderBot => *self == Self::SpiderBot,
360            UnitDefKind::ArmMortarBot => *self == Self::MortarBot,
361            UnitDefKind::ArmCrawlingBomb => *self == Self::CrawlingBomb,
362            UnitDefKind::ArmHeavyRocketBot => *self == Self::HeavyRocketBot,
363            UnitDefKind::ArmAdvancedCrawlingBomb => *self == Self::AdvancedCrawlingBomb,
364            UnitDefKind::ArmDecoyCommander => *self == Self::DecoyCommander,
365            UnitDefKind::ArmRadarBot => *self == Self::RadarBot,
366            UnitDefKind::ArmSpyBot => *self == Self::SpyBot,
367            UnitDefKind::ArmStealthBot => *self == Self::StealthBot,
368            UnitDefKind::ArmCombatEngineer => *self == Self::CombatEngineer,
369            UnitDefKind::ArmJammerBot => *self == Self::JammerBot,
370            UnitDefKind::ArmHeavyAntiAir => *self == Self::HeavyAntiAir,
371            UnitDefKind::ArmT1VehicleConstructor => *self == Self::T1VehicleConstructor,
372            UnitDefKind::ArmAmphibiousConstructor => *self == Self::AmphibiousConstructor,
373            UnitDefKind::ArmMinelayer => *self == Self::Minelayer,
374            UnitDefKind::ArmLightScoutVehicle => *self == Self::LightScoutVehicle,
375            UnitDefKind::ArmLightTank => *self == Self::LightTank,
376            UnitDefKind::ArmLightAmphibiousTank => *self == Self::LightAmphibiousTank,
377            UnitDefKind::ArmMediumAssaultTank => *self == Self::MediumAssaultTank,
378            UnitDefKind::ArmLightMobileArtillery => *self == Self::LightMobileArtillery,
379            UnitDefKind::ArmMissileTruck => *self == Self::MissileTruck,
380            UnitDefKind::ArmAntiSwarmTank => *self == Self::AntiSwarmTank,
381            UnitDefKind::ArmLightMine => *self == Self::LightMine,
382            UnitDefKind::ArmMediumMine => *self == Self::MediumMine,
383            UnitDefKind::ArmHeavyMine => *self == Self::HeavyMine,
384            UnitDefKind::ArmAdvancedVehiclePlant => *self == Self::AdvancedVehiclePlant,
385            UnitDefKind::ArmT2VehicleConstructor => *self == Self::T2VehicleConstructor,
386            UnitDefKind::ArmRadarJammerVehicle => *self == Self::RadarJammerVehicle,
387            UnitDefKind::ArmHeavyAssaultTank => *self == Self::HeavyAssaultTank,
388            UnitDefKind::ArmStealthyRocketLauncher => *self == Self::StealthyRocketLauncher,
389            UnitDefKind::ArmHeavyMissileTank => *self == Self::HeavyMissileTank,
390            UnitDefKind::ArmMobileArtilleryTank => *self == Self::MobileArtilleryTank,
391            UnitDefKind::ArmHeavyArtilleryTank => *self == Self::HeavyArtilleryTank,
392            UnitDefKind::ArmVeryHeavyAssaultTank => *self == Self::VeryHeavyAssaultTank,
393            UnitDefKind::ArmMediumAmphibiousTank => *self == Self::MediumAmphibiousTank,
394            UnitDefKind::ArmVeryHeavyAmphibiousTank => *self == Self::VeryHeavyAmphibiousTank,
395            UnitDefKind::ArmAntiAirFlakTank => *self == Self::AntiAirFlakTank,
396            UnitDefKind::ArmAntiNukeTank => *self == Self::AntiNukeTank,
397            UnitDefKind::ArmRadarVehicle => *self == Self::RadarVehicle,
398            UnitDefKind::ArmMobileHeavyTurretExperimental => {
399                *self == Self::MobileHeavyTurretExperimental
400            }
401            UnitDefKind::ArmAllTerrainAssaultExperimental => {
402                *self == Self::AllTerrainAssaultExperimental
403            }
404            UnitDefKind::ArmAssaultBotExperimental => *self == Self::AssaultBotExperimental,
405            UnitDefKind::ArmAmphibiousSiegeExperimental => {
406                *self == Self::AmphibiousSiegeExperimental
407            }
408            UnitDefKind::ArmHeavyRocketExperimental => *self == Self::HeavyRocketExperimental,
409            UnitDefKind::ArmHeavyLaserHovertankExperimental => {
410                *self == Self::HeavyLaserHovertankExperimental
411            }
412            UnitDefKind::ArmT1HovercraftConstructor => *self == Self::T1HovercraftConstructor,
413            UnitDefKind::ArmFastAttackHovertank => *self == Self::FastAttackHovertank,
414            UnitDefKind::ArmHovertank => *self == Self::Hovertank,
415            UnitDefKind::ArmAssaultHovertank => *self == Self::AssaultHovertank,
416            UnitDefKind::ArmRocketHovertank => *self == Self::RocketHovertank,
417            UnitDefKind::ArmAntiAirHovertank => *self == Self::AntiAirHovertank,
418            UnitDefKind::ArmNavalConstructionTurret => *self == Self::NavalConstructionTurret,
419            UnitDefKind::ArmAmphibiousComplex => *self == Self::AmphibiousComplex,
420            UnitDefKind::ArmFloatingHeavyLaserTower => *self == Self::FloatingHeavyLaserTower,
421            UnitDefKind::ArmAdvancedShipyard => *self == Self::AdvancedShipyard,
422            UnitDefKind::ArmUnderwaterGeothermalPowerplant => {
423                *self == Self::UnderwaterGeothermalPowerplant
424            }
425            UnitDefKind::ArmPopUpTorpedoLauncher => *self == Self::PopUpTorpedoLauncher,
426            UnitDefKind::ArmT1ShipConstructor => *self == Self::T1ShipConstructor,
427            UnitDefKind::ArmRessurectionSub => *self == Self::RessurectionSub,
428            UnitDefKind::ArmLightGunBoat => *self == Self::LightGunBoat,
429            UnitDefKind::ArmMissileCorvette => *self == Self::MissileCorvette,
430            UnitDefKind::ArmAssaultFrigate => *self == Self::AssaultFrigate,
431            UnitDefKind::ArmDestroyer => *self == Self::Destroyer,
432            UnitDefKind::ArmSub => *self == Self::Sub,
433            UnitDefKind::ArmT2ShipConstructor => *self == Self::T2ShipConstructor,
434            UnitDefKind::ArmNavalEngineer => *self == Self::NavalEngineer,
435            UnitDefKind::ArmCruiser => *self == Self::Cruiser,
436            UnitDefKind::ArmFastAssaultSubmarine => *self == Self::FastAssaultSubmarine,
437            UnitDefKind::ArmLongRangeBattleSubmarine => *self == Self::LongRangeBattleSubmarine,
438            UnitDefKind::ArmAntiAirShip => *self == Self::AntiAirShip,
439            UnitDefKind::ArmRadarJammerShip => *self == Self::RadarJammerShip,
440            UnitDefKind::ArmAircraftCarrier => *self == Self::AircraftCarrier,
441            UnitDefKind::ArmBattleship => *self == Self::Battleship,
442            UnitDefKind::ArmCruiseMissileShip => *self == Self::CruiseMissileShip,
443            UnitDefKind::ArmFlagship => *self == Self::Flagship,
444            UnitDefKind::ArmFloatingHeavyMine => *self == Self::FloatingHeavyMine,
445            UnitDefKind::ArmUnderwaterExperimentalGantry => {
446                *self == Self::UnderwaterExperimentalGantry
447            }
448            UnitDefKind::ArmUnderwaterFusionReactor => *self == Self::UnderwaterFusionReactor,
449            UnitDefKind::ArmUnderwaterMetalConverter => *self == Self::UnderwaterMetalConverter,
450            UnitDefKind::ArmUnderwaterEnergyConverter => *self == Self::UnderwaterEnergyConverter,
451            UnitDefKind::ArmAdvancedSonar => *self == Self::AdvancedSonar,
452            UnitDefKind::ArmNavalAdvancedRadarTargeting => {
453                *self == Self::NavalAdvancedRadarTargeting
454            }
455            UnitDefKind::ArmAdvancedTorpedoLauncher => *self == Self::AdvancedTorpedoLauncher,
456            UnitDefKind::ArmNavalAntiAirGun => *self == Self::NavalAntiAirGun,
457            UnitDefKind::ArmFloatingMultiweaponPlatform => {
458                *self == Self::FloatingMultiweaponPlatform
459            }
460            UnitDefKind::ArmSeaplaneConstructor => *self == Self::SeaplaneConstructor,
461            UnitDefKind::ArmSeaplaneGunship => *self == Self::SeaplaneGunship,
462            UnitDefKind::ArmSeaplaneBomber => *self == Self::SeaplaneBomber,
463            UnitDefKind::ArmSeaplaneTorpedoGunship => *self == Self::SeaplaneTorpedoGunship,
464            UnitDefKind::ArmSeaplaneFighter => *self == Self::SeaplaneFighter,
465            UnitDefKind::ArmSeaplaneRadarSonar => *self == Self::SeaplaneRadarSonar,
466            UnitDefKind::Unknown => *self == Self::Unknown,
467            _ => false,
468        }
469    }
470}