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

1use crate::ai_interface::callback::unit_def::{kind::base::UnitDefKind, UnitDef};
2
3#[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
4pub enum Any {
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    ElementalTurret,
50    LaserTower,
51    Artillery,
52    AntiAirMissle,
53    RadarJammer,
54    AntiRadar,
55    // T2 Air Plant
56    T2AirConstructor,
57    RadarSonarAircraft,
58    StealthFighter,
59    Gunship,
60    StrategicBomber,
61    TorpedoBomber,
62    HeavyTransport,
63    // T2 Air Constructor
64    FusionReactor,
65    AdvancedFusionReactor,
66    AdvancedGeothermalPowerplant,
67    GeothermalWeapon,
68    Unknown0,
69    AdvancedMetalExtractor,
70    AdvancedArmoredMetalExtractor,
71    WaterAircraftRepairPad,
72    HardenedEnergyStorage,
73    HardenedMetalStorage,
74    AdvancedRadar,
75    LongRangeJammer,
76    FortificationWall,
77    AdvancedEnergyConverter,
78    IntrusionDetector,
79    PlasmaDeflector,
80    EnergyWeapon,
81    RadarTargeting,
82    PopUpBattery,
83    PopUpPlasmaArtillery,
84    AntiAirFlak,
85    LongRangeAntiAir,
86    SeaplanePlatform,
87    TacticalMissileLauncher,
88    NuclearSilo,
89    AntiNukeLauncher,
90    LongRangePlasmaCannon,
91    RapidFireLongRangePlasmaCannon,
92    ExperimentalGantry,
93    // T1 Bot Lab
94    T1BotConstructor,
95    T1RessurectionBot,
96    FastInfantryBot,
97    RocketBot,
98    LightPlasmaBot,
99    AmphibiousAntiAirBot,
100    // T1 Bot Constructor
101    AdvancedBotLab,
102    // T2 Bot Lab
103    T2BotConstructor,
104    FastAssaultBot,
105    AmphibiousBot,
106    HeavilyArmoredAssaultBot,
107    ArmoredAssaultBot,
108    SpiderBot,
109    MortarBot,
110    CrawlingBomb,
111    HeavyRocketBot,
112    AdvancedCrawlingBomb,
113    DecoyCommander,
114    RadarBot,
115    SpyBot,
116    StealthBot,
117    CombatEngineer,
118    JammerBot,
119    HeavyAntiAir,
120    // Stealth Bot
121    Unknown1,
122    // T2 Bot Constructor
123    // T1 Vehicle Plant
124    T1VehicleConstructor,
125    AmphibiousConstructor,
126    Minelayer,
127    LightScoutVehicle,
128    LightTank,
129    LightAmphibiousTank,
130    MediumAssaultTank,
131    LightMobileArtillery,
132    MissileTruck,
133    AntiSwarmTank,
134    // T1 Minelayer
135    LightMine,
136    MediumMine,
137    HeavyMine,
138    // T1 Vehicle Constructor
139    AdvancedVehiclePlant,
140    // T2 Vehicle Plant
141    T2VehicleConstructor,
142    RadarJammerVehicle,
143    HeavyAssaultTank,
144    StealthyRocketLauncher,
145    HeavyMissileTank,
146    MobileArtilleryTank,
147    HeavyArtilleryTank,
148    VeryHeavyAssaultTank,
149    MediumAmphibiousTank,
150    HeavyAmphibiousTank,
151    VeryHeavyAmphibiousTank,
152    AntiAirFlakTank,
153    AntiNukeTank,
154    RadarVehicle,
155    // Experimental Gantry
156    MobileHeavyTurretExperimental,
157    AllTerrainAssaultExperimental,
158    AssaultBotExperimental,
159    AmphibiousSiegeExperimental,
160    HeavyRocketExperimental,
161    HeavyLaserHovertankExperimental,
162    // T1 Hovercraft Plant
163    T1HovercraftConstructor,
164    FastAttackHovertank,
165    Hovertank,
166    AssaultHovertank,
167    RocketHovertank,
168    AntiAirHovertank,
169    // T1 Hovercraft Constructor
170    NavalConstructionTurret,
171    AmphibiousComplex,
172    FloatingHeavyLaserTower,
173    AdvancedShipyard,
174    UnderwaterGeothermalPowerplant,
175    // T1 Amphibious Constructor
176    PopUpTorpedoLauncher,
177    // T1 Shipyard
178    T1ShipConstructor,
179    RessurectionSub,
180    LightGunBoat,
181    MissileCorvette,
182    AssaultFrigate,
183    Destroyer,
184    Sub,
185    // T1 Ship Constructor
186    // T2 Shipyard
187    T2ShipConstructor,
188    NavalEngineer,
189    Cruiser,
190    FastAssaultSubmarine,
191    LongRangeBattleSubmarine,
192    AntiAirShip,
193    RadarJammerShip,
194    AircraftCarrier,
195    Battleship,
196    CruiseMissileShip,
197    Flagship,
198    // Naval Engineer
199    FloatingHeavyMine,
200    // T2 Ship Constructor
201    UnderwaterExperimentalGantry,
202    UnderwaterFusionReactor,
203    UnderwaterMetalConverter,
204    UnderwaterEnergyConverter,
205    AdvancedSonar,
206    NavalAdvancedRadarTargeting,
207    AdvancedTorpedoLauncher,
208    NavalAntiAirGun,
209    FloatingMultiweaponPlatform,
210    // T1 Seaplane Plant
211    SeaplaneConstructor,
212    SeaplaneGunship,
213    SeaplaneBomber,
214    SeaplaneTorpedoGunship,
215    SeaplaneFighter,
216    SeaplaneRadarSonar,
217    // T1 Seaplane Constructor
218    Unknown,
219}
220
221impl PartialEq<Any> for UnitDef {
222    fn eq(&self, other: &Any) -> bool {
223        *other == self.kind().unwrap_or(UnitDefKind::Unknown)
224    }
225}
226
227impl PartialEq<UnitDef> for Any {
228    fn eq(&self, other: &UnitDef) -> bool {
229        other.kind().unwrap_or(UnitDefKind::Unknown) == *self
230    }
231}
232
233impl PartialEq<Any> for UnitDefKind {
234    fn eq(&self, other: &Any) -> bool {
235        other == self
236    }
237}
238
239impl PartialEq<UnitDefKind> for Any {
240    fn eq(&self, other: &UnitDefKind) -> bool {
241        match other {
242            UnitDefKind::CoreCommander | UnitDefKind::ArmCommander => *self == Self::Commander,
243            UnitDefKind::CoreWindTurbine | UnitDefKind::ArmWindTurbine => {
244                *self == Self::WindTurbine
245            }
246            UnitDefKind::CoreSolar | UnitDefKind::ArmSolar => *self == Self::Solar,
247            UnitDefKind::CoreMetalStorage | UnitDefKind::ArmMetalStorage => {
248                *self == Self::MetalStorage
249            }
250            UnitDefKind::CoreEnergyStorage | UnitDefKind::ArmEnergyStorage => {
251                *self == Self::EnergyStorage
252            }
253            UnitDefKind::CoreMetalExtractor | UnitDefKind::ArmMetalExtractor => {
254                *self == Self::MetalExtractor
255            }
256            UnitDefKind::CoreEnergyConverter | UnitDefKind::ArmEnergyConverter => {
257                *self == Self::EnergyConverter
258            }
259            UnitDefKind::CoreBotLab | UnitDefKind::ArmBotLab => *self == Self::BotLab,
260            UnitDefKind::CoreVehiclePlant | UnitDefKind::ArmVehiclePlant => {
261                *self == Self::VehiclePlant
262            }
263            UnitDefKind::CoreAirPlant | UnitDefKind::ArmAirPlant => *self == Self::AirPlant,
264            UnitDefKind::CoreHovercraftPlatform | UnitDefKind::ArmHovercraftPlatform => {
265                *self == Self::HovercraftPlatform
266            }
267            UnitDefKind::CoreCamera | UnitDefKind::ArmCamera => *self == Self::Camera,
268            UnitDefKind::CoreRadar | UnitDefKind::ArmRadar => *self == Self::Radar,
269            UnitDefKind::CoreTeeth | UnitDefKind::ArmTeeth => *self == Self::Teeth,
270            UnitDefKind::CoreLightLaserTower | UnitDefKind::ArmLightLaserTower => {
271                *self == Self::LightLaserTower
272            }
273            UnitDefKind::CoreLightAntiAir | UnitDefKind::ArmLightAntiAir => {
274                *self == Self::LightAntiAir
275            }
276            UnitDefKind::CoreFloatingLightAntiAir | UnitDefKind::ArmFloatingLightAntiAir => {
277                *self == Self::FloatingLightAntiAir
278            }
279            UnitDefKind::CoreTorpedoLauncher | UnitDefKind::ArmTorpedoLauncher => {
280                *self == Self::TorpedoLauncher
281            }
282            UnitDefKind::CoreUnderwaterMetalStorage | UnitDefKind::ArmUnderwaterMetalStorage => {
283                *self == Self::UnderwaterMetalStorage
284            }
285            UnitDefKind::CoreUnderwaterEnergyStorage | UnitDefKind::ArmUnderwaterEnergyStorage => {
286                *self == Self::UnderwaterEnergyStorage
287            }
288            UnitDefKind::CoreNavalEnergyConverter | UnitDefKind::ArmNavalEnergyConverter => {
289                *self == Self::NavalEnergyConverter
290            }
291            UnitDefKind::CoreShipyard | UnitDefKind::ArmShipyard => *self == Self::Shipyard,
292            UnitDefKind::CoreTidalGenerator | UnitDefKind::ArmTidalGenerator => {
293                *self == Self::TidalGenerator
294            }
295            UnitDefKind::CoreFloatingTeeth | UnitDefKind::ArmFloatingTeeth => {
296                *self == Self::FloatingTeeth
297            }
298            UnitDefKind::CoreFloatingRadar | UnitDefKind::ArmFloatingRadar => {
299                *self == Self::FloatingRadar
300            }
301            UnitDefKind::CoreFloatingHovercraftPlatform
302            | UnitDefKind::ArmFloatingHovercraftPlatform => {
303                *self == Self::FloatingHovercraftPlatform
304            }
305            UnitDefKind::CoreOffshoreTorpedoLauncher | UnitDefKind::ArmOffshoreTorpedoLauncher => {
306                *self == Self::OffshoreTorpedoLauncher
307            }
308            UnitDefKind::CoreT1AirConstructor | UnitDefKind::ArmT1AirConstructor => {
309                *self == Self::T1AirConstructor
310            }
311            UnitDefKind::CoreT1AirScout | UnitDefKind::ArmT1AirScout => *self == Self::T1AirScout,
312            UnitDefKind::CoreT1Fighter | UnitDefKind::ArmT1Fighter => *self == Self::T1Fighter,
313            UnitDefKind::CoreT1Bomber | UnitDefKind::ArmT1Bomber => *self == Self::T1Bomber,
314            UnitDefKind::CoreLightParalyzerDrone | UnitDefKind::ArmLightParalyzerDrone => {
315                *self == Self::LightParalyzerDrone
316            }
317            UnitDefKind::CoreT1AirTransport | UnitDefKind::ArmT1AirTransport => {
318                *self == Self::T1AirTransport
319            }
320            UnitDefKind::CoreAdvancedSolar | UnitDefKind::ArmAdvancedSolar => {
321                *self == Self::AdvancedSolar
322            }
323            UnitDefKind::CoreGeothermalPowerplant | UnitDefKind::ArmGeothermalPowerplant => {
324                *self == Self::GeothermalPowerplant
325            }
326            UnitDefKind::CoreArmedMetalExtractor | UnitDefKind::ArmArmedMetalExtractor => {
327                *self == Self::ArmedMetalExtractor
328            }
329            UnitDefKind::CoreAircraftRepairPad | UnitDefKind::ArmAircraftRepairPad => {
330                *self == Self::AircraftRepairPad
331            }
332            UnitDefKind::CoreUnderwaterAdvancedGeothermalPowerplant
333            | UnitDefKind::ArmUnderwaterAdvancedGeothermalPowerplant => {
334                *self == Self::UnderwaterAdvancedGeothermalPowerplant
335            }
336            UnitDefKind::CoreAdvancedAircraftPlant | UnitDefKind::ArmAdvancedAircraftPlant => {
337                *self == Self::AdvancedAircraftPlant
338            }
339            UnitDefKind::CoreConstructionTurret | UnitDefKind::ArmConstructionTurret => {
340                *self == Self::ConstructionTurret
341            }
342            UnitDefKind::CoreAreaControlLaserTower | UnitDefKind::ArmAreaControlLaserTower => {
343                *self == Self::AreaControlLaserTower
344            }
345            UnitDefKind::CoreFlamethrowerTurret | UnitDefKind::ArmLightningTurret => {
346                *self == Self::ElementalTurret
347            }
348            UnitDefKind::CoreAntiSwarmLaserTower | UnitDefKind::ArmLaserTurret => {
349                *self == Self::LaserTower
350            }
351            UnitDefKind::CoreArtillery | UnitDefKind::ArmAreaControlPlasmaArtillery => {
352                *self == Self::Artillery
353            }
354            UnitDefKind::CoreAntiAirMissle | UnitDefKind::ArmPopUpAntiAirMissileBattery => {
355                *self == Self::AntiAirMissle
356            }
357            UnitDefKind::CoreRadarJammer | UnitDefKind::ArmRadarJammer => {
358                *self == Self::RadarJammer
359            }
360            UnitDefKind::CoreAntiRadar | UnitDefKind::ArmAntiRadar => *self == Self::AntiRadar,
361            UnitDefKind::CoreT2AirConstructor | UnitDefKind::ArmT2AirConstructor => {
362                *self == Self::T2AirConstructor
363            }
364            UnitDefKind::CoreRadarSonarAircraft | UnitDefKind::ArmRadarSonarAircraft => {
365                *self == Self::RadarSonarAircraft
366            }
367            UnitDefKind::CoreStealthFighter | UnitDefKind::ArmStealthFighter => {
368                *self == Self::StealthFighter
369            }
370            UnitDefKind::CoreGunship | UnitDefKind::ArmGunship => *self == Self::Gunship,
371            UnitDefKind::CoreStrategicBomber | UnitDefKind::ArmStrategicBomber => {
372                *self == Self::StrategicBomber
373            }
374            UnitDefKind::CoreTorpedoBomber | UnitDefKind::ArmTorpedoBomber => {
375                *self == Self::TorpedoBomber
376            }
377            UnitDefKind::CoreHeavyTransport | UnitDefKind::ArmHeavyTransport => {
378                *self == Self::HeavyTransport
379            }
380            UnitDefKind::CoreFusionReactor | UnitDefKind::ArmFusionReactor => {
381                *self == Self::FusionReactor
382            }
383            UnitDefKind::CoreAdvancedFusionReactor | UnitDefKind::ArmAdvancedFusionReactor => {
384                *self == Self::AdvancedFusionReactor
385            }
386            UnitDefKind::CoreAdvancedGeothermalPowerplant
387            | UnitDefKind::ArmAdvancedGeothermalPowerplant => {
388                *self == Self::AdvancedGeothermalPowerplant
389            }
390            UnitDefKind::CoreGeothermalWeapon | UnitDefKind::ArmGeothermalWeapon => {
391                *self == Self::GeothermalWeapon
392            }
393            UnitDefKind::CoreAdvancedMetalExtractor | UnitDefKind::ArmAdvancedMetalExtractor => {
394                *self == Self::AdvancedMetalExtractor
395            }
396            UnitDefKind::CoreAdvancedArmoredMetalExtractor
397            | UnitDefKind::ArmAdvancedArmoredMetalExtractor => {
398                *self == Self::AdvancedArmoredMetalExtractor
399            }
400            UnitDefKind::CoreWaterAircraftRepairPad | UnitDefKind::ArmWaterAircraftRepairPad => {
401                *self == Self::WaterAircraftRepairPad
402            }
403            UnitDefKind::CoreHardenedEnergyStorage | UnitDefKind::ArmHardenedEnergyStorage => {
404                *self == Self::HardenedEnergyStorage
405            }
406            UnitDefKind::CoreHardenedMetalStorage | UnitDefKind::ArmHardenedMetalStorage => {
407                *self == Self::HardenedMetalStorage
408            }
409            UnitDefKind::CoreAdvancedRadar | UnitDefKind::ArmAdvancedRadar => {
410                *self == Self::AdvancedRadar
411            }
412            UnitDefKind::CoreLongRangeJammer | UnitDefKind::ArmLongRangeJammer => {
413                *self == Self::LongRangeJammer
414            }
415            UnitDefKind::CoreFortificationWall | UnitDefKind::ArmFortificationWall => {
416                *self == Self::FortificationWall
417            }
418            UnitDefKind::CoreAdvancedEnergyConverter | UnitDefKind::ArmAdvancedEnergyConverter => {
419                *self == Self::AdvancedEnergyConverter
420            }
421            UnitDefKind::CoreIntrusionDetector | UnitDefKind::ArmIntrusionDetector => {
422                *self == Self::IntrusionDetector
423            }
424            UnitDefKind::CorePlasmaDeflector | UnitDefKind::ArmPlasmaDeflector => {
425                *self == Self::PlasmaDeflector
426            }
427            UnitDefKind::CoreEnergyWeapon | UnitDefKind::ArmEnergyWeapon => {
428                *self == Self::EnergyWeapon
429            }
430            UnitDefKind::CoreRadarTargeting | UnitDefKind::ArmRadarTargeting => {
431                *self == Self::RadarTargeting
432            }
433            UnitDefKind::CorePopUpBattery | UnitDefKind::ArmPopUpBattery => {
434                *self == Self::PopUpBattery
435            }
436            UnitDefKind::CorePopUpPlasmaArtillery | UnitDefKind::ArmPopUpPlasmaArtillery => {
437                *self == Self::PopUpPlasmaArtillery
438            }
439            UnitDefKind::CoreAntiAirFlak | UnitDefKind::ArmAntiAirFlak => {
440                *self == Self::AntiAirFlak
441            }
442            UnitDefKind::CoreLongRangeAntiAir | UnitDefKind::ArmLongRangeAntiAir => {
443                *self == Self::LongRangeAntiAir
444            }
445            UnitDefKind::CoreSeaplanePlatform | UnitDefKind::ArmSeaplanePlatform => {
446                *self == Self::SeaplanePlatform
447            }
448            UnitDefKind::CoreTacticalMissileLauncher | UnitDefKind::ArmTacticalMissileLauncher => {
449                *self == Self::TacticalMissileLauncher
450            }
451            UnitDefKind::CoreNuclearSilo | UnitDefKind::ArmNuclearSilo => {
452                *self == Self::NuclearSilo
453            }
454            UnitDefKind::CoreAntiNukeLauncher | UnitDefKind::ArmAntiNukeLauncher => {
455                *self == Self::AntiNukeLauncher
456            }
457            UnitDefKind::CoreLongRangePlasmaCannon | UnitDefKind::ArmLongRangePlasmaCannon => {
458                *self == Self::LongRangePlasmaCannon
459            }
460            UnitDefKind::CoreRapidFireLongRangePlasmaCannon
461            | UnitDefKind::ArmRapidFireLongRangePlasmaCannon => {
462                *self == Self::RapidFireLongRangePlasmaCannon
463            }
464            UnitDefKind::CoreExperimentalGantry | UnitDefKind::ArmExperimentalGantry => {
465                *self == Self::ExperimentalGantry
466            }
467            UnitDefKind::CoreT1BotConstructor | UnitDefKind::ArmT1BotConstructor => {
468                *self == Self::T1BotConstructor
469            }
470            UnitDefKind::CoreT1RessurectionBot | UnitDefKind::ArmT1RessurectionBot => {
471                *self == Self::T1RessurectionBot
472            }
473            UnitDefKind::CoreFastInfantryBot | UnitDefKind::ArmFastInfantryBot => {
474                *self == Self::FastInfantryBot
475            }
476            UnitDefKind::CoreRocketBot | UnitDefKind::ArmRocketBot => *self == Self::RocketBot,
477            UnitDefKind::CoreLightPlasmaBot | UnitDefKind::ArmLightPlasmaBot => {
478                *self == Self::LightPlasmaBot
479            }
480            UnitDefKind::CoreAmphibiousAntiAirBot | UnitDefKind::ArmAmphibiousAntiAirBot => {
481                *self == Self::AmphibiousAntiAirBot
482            }
483            UnitDefKind::CoreAdvancedBotLab | UnitDefKind::ArmAdvancedBotLab => {
484                *self == Self::AdvancedBotLab
485            }
486            UnitDefKind::CoreT2BotConstructor | UnitDefKind::ArmT2BotConstructor => {
487                *self == Self::T2BotConstructor
488            }
489            UnitDefKind::CoreFastAssaultBot | UnitDefKind::ArmFastAssaultBot => {
490                *self == Self::FastAssaultBot
491            }
492            UnitDefKind::CoreAmphibiousBot | UnitDefKind::ArmAmphibiousBot => {
493                *self == Self::AmphibiousBot
494            }
495            UnitDefKind::CoreHeavilyArmoredAssaultBot
496            | UnitDefKind::ArmHeavilyArmoredAssaultBot => *self == Self::HeavilyArmoredAssaultBot,
497            UnitDefKind::CoreArmoredAssaultBot | UnitDefKind::ArmArmoredAssaultBot => {
498                *self == Self::MetalStorage
499            }
500            UnitDefKind::CoreSpiderBot | UnitDefKind::ArmSpiderBot => *self == Self::SpiderBot,
501            UnitDefKind::CoreMortarBot | UnitDefKind::ArmMortarBot => *self == Self::MortarBot,
502            UnitDefKind::CoreCrawlingBomb | UnitDefKind::ArmCrawlingBomb => {
503                *self == Self::CrawlingBomb
504            }
505            UnitDefKind::CoreHeavyRocketBot | UnitDefKind::ArmHeavyRocketBot => {
506                *self == Self::HeavyRocketBot
507            }
508            UnitDefKind::CoreAdvancedCrawlingBomb | UnitDefKind::ArmAdvancedCrawlingBomb => {
509                *self == Self::AdvancedCrawlingBomb
510            }
511            UnitDefKind::CoreDecoyCommander | UnitDefKind::ArmDecoyCommander => {
512                *self == Self::DecoyCommander
513            }
514            UnitDefKind::CoreRadarBot | UnitDefKind::ArmRadarBot => *self == Self::RadarBot,
515            UnitDefKind::CoreSpyBot | UnitDefKind::ArmSpyBot => *self == Self::SpyBot,
516            UnitDefKind::CoreStealthBot | UnitDefKind::ArmStealthBot => *self == Self::StealthBot,
517            UnitDefKind::CoreCombatEngineer | UnitDefKind::ArmCombatEngineer => {
518                *self == Self::CombatEngineer
519            }
520            UnitDefKind::CoreJammerBot | UnitDefKind::ArmJammerBot => *self == Self::JammerBot,
521            UnitDefKind::CoreHeavyAntiAir | UnitDefKind::ArmHeavyAntiAir => {
522                *self == Self::HeavyAntiAir
523            }
524            UnitDefKind::CoreT1VehicleConstructor | UnitDefKind::ArmT1VehicleConstructor => {
525                *self == Self::T1VehicleConstructor
526            }
527            UnitDefKind::CoreAmphibiousConstructor | UnitDefKind::ArmAmphibiousConstructor => {
528                *self == Self::AmphibiousConstructor
529            }
530            UnitDefKind::CoreMinelayer | UnitDefKind::ArmMinelayer => *self == Self::Minelayer,
531            UnitDefKind::CoreLightScoutVehicle | UnitDefKind::ArmLightScoutVehicle => {
532                *self == Self::LightScoutVehicle
533            }
534            UnitDefKind::CoreLightTank | UnitDefKind::ArmLightTank => *self == Self::LightTank,
535            UnitDefKind::CoreLightAmphibiousTank | UnitDefKind::ArmLightAmphibiousTank => {
536                *self == Self::LightAmphibiousTank
537            }
538            UnitDefKind::CoreMediumAssaultTank | UnitDefKind::ArmMediumAssaultTank => {
539                *self == Self::MediumAssaultTank
540            }
541            UnitDefKind::CoreLightMobileArtillery | UnitDefKind::ArmLightMobileArtillery => {
542                *self == Self::LightMobileArtillery
543            }
544            UnitDefKind::CoreMissileTruck | UnitDefKind::ArmMissileTruck => {
545                *self == Self::MissileTruck
546            }
547            UnitDefKind::CoreAntiSwarmTank | UnitDefKind::ArmAntiSwarmTank => {
548                *self == Self::AntiSwarmTank
549            }
550            UnitDefKind::CoreLightMine | UnitDefKind::ArmLightMine => *self == Self::LightMine,
551            UnitDefKind::CoreMediumMine | UnitDefKind::ArmMediumMine => *self == Self::MediumMine,
552            UnitDefKind::CoreHeavyMine | UnitDefKind::ArmHeavyMine => *self == Self::HeavyMine,
553            UnitDefKind::CoreAdvancedVehiclePlant | UnitDefKind::ArmAdvancedVehiclePlant => {
554                *self == Self::AdvancedVehiclePlant
555            }
556            UnitDefKind::CoreT2VehicleConstructor | UnitDefKind::ArmT2VehicleConstructor => {
557                *self == Self::MetalStorage
558            }
559            UnitDefKind::CoreRadarJammerVehicle | UnitDefKind::ArmRadarJammerVehicle => {
560                *self == Self::RadarJammerVehicle
561            }
562            UnitDefKind::CoreHeavyAssaultTank | UnitDefKind::ArmHeavyAssaultTank => {
563                *self == Self::HeavyAssaultTank
564            }
565            UnitDefKind::CoreStealthyRocketLauncher | UnitDefKind::ArmStealthyRocketLauncher => {
566                *self == Self::StealthyRocketLauncher
567            }
568            UnitDefKind::CoreHeavyMissileTank | UnitDefKind::ArmHeavyMissileTank => {
569                *self == Self::HeavyMissileTank
570            }
571            UnitDefKind::CoreMobileArtilleryTank | UnitDefKind::ArmMobileArtilleryTank => {
572                *self == Self::MobileArtilleryTank
573            }
574            UnitDefKind::CoreHeavyArtilleryTank | UnitDefKind::ArmHeavyArtilleryTank => {
575                *self == Self::HeavyArtilleryTank
576            }
577            UnitDefKind::CoreVeryHeavyAssaultTank | UnitDefKind::ArmVeryHeavyAssaultTank => {
578                *self == Self::VeryHeavyAssaultTank
579            }
580            UnitDefKind::CoreMediumAmphibiousTank | UnitDefKind::ArmMediumAmphibiousTank => {
581                *self == Self::MediumAmphibiousTank
582            }
583            UnitDefKind::ArmHeavyAmphibiousTank => {
584                *self == Self::HeavyAmphibiousTank
585            }
586            UnitDefKind::CoreVeryHeavyAmphibiousTank | UnitDefKind::ArmVeryHeavyAmphibiousTank => {
587                *self == Self::VeryHeavyAmphibiousTank
588            }
589            UnitDefKind::CoreAntiAirFlakTank | UnitDefKind::ArmAntiAirFlakTank => {
590                *self == Self::AntiAirFlakTank
591            }
592            UnitDefKind::CoreAntiNukeTank | UnitDefKind::ArmAntiNukeTank => {
593                *self == Self::AntiNukeTank
594            }
595            UnitDefKind::CoreRadarVehicle | UnitDefKind::ArmRadarVehicle => {
596                *self == Self::RadarVehicle
597            }
598            UnitDefKind::CoreMobileHeavyTurretExperimental
599            | UnitDefKind::ArmMobileHeavyTurretExperimental => {
600                *self == Self::MobileHeavyTurretExperimental
601            }
602            UnitDefKind::CoreAllTerrainAssaultExperimental
603            | UnitDefKind::ArmAllTerrainAssaultExperimental => {
604                *self == Self::AllTerrainAssaultExperimental
605            }
606            UnitDefKind::CoreAssaultBotExperimental | UnitDefKind::ArmAssaultBotExperimental => {
607                *self == Self::AssaultBotExperimental
608            }
609            UnitDefKind::CoreAmphibiousSiegeExperimental
610            | UnitDefKind::ArmAmphibiousSiegeExperimental => {
611                *self == Self::AmphibiousSiegeExperimental
612            }
613            UnitDefKind::CoreHeavyRocketExperimental | UnitDefKind::ArmHeavyRocketExperimental => {
614                *self == Self::HeavyRocketExperimental
615            }
616            UnitDefKind::CoreHeavyLaserHovertankExperimental
617            | UnitDefKind::ArmHeavyLaserHovertankExperimental => {
618                *self == Self::HeavyLaserHovertankExperimental
619            }
620            UnitDefKind::CoreT1HovercraftConstructor | UnitDefKind::ArmT1HovercraftConstructor => {
621                *self == Self::T1HovercraftConstructor
622            }
623            UnitDefKind::CoreFastAttackHovertank | UnitDefKind::ArmFastAttackHovertank => {
624                *self == Self::FastAttackHovertank
625            }
626            UnitDefKind::CoreHovertank | UnitDefKind::ArmHovertank => *self == Self::Hovertank,
627            UnitDefKind::CoreAssaultHovertank | UnitDefKind::ArmAssaultHovertank => {
628                *self == Self::AssaultHovertank
629            }
630            UnitDefKind::CoreRocketHovertank | UnitDefKind::ArmRocketHovertank => {
631                *self == Self::RocketHovertank
632            }
633            UnitDefKind::CoreAntiAirHovertank | UnitDefKind::ArmAntiAirHovertank => {
634                *self == Self::AntiAirHovertank
635            }
636            UnitDefKind::CoreNavalConstructionTurret | UnitDefKind::ArmNavalConstructionTurret => {
637                *self == Self::NavalConstructionTurret
638            }
639            UnitDefKind::CoreAmphibiousComplex | UnitDefKind::ArmAmphibiousComplex => {
640                *self == Self::AmphibiousComplex
641            }
642            UnitDefKind::CoreFloatingHeavyLaserTower | UnitDefKind::ArmFloatingHeavyLaserTower => {
643                *self == Self::FloatingHeavyLaserTower
644            }
645            UnitDefKind::CoreAdvancedShipyard | UnitDefKind::ArmAdvancedShipyard => {
646                *self == Self::AdvancedShipyard
647            }
648            UnitDefKind::CoreUnderwaterGeothermalPowerplant
649            | UnitDefKind::ArmUnderwaterGeothermalPowerplant => {
650                *self == Self::UnderwaterGeothermalPowerplant
651            }
652            UnitDefKind::CorePopUpTorpedoLauncher | UnitDefKind::ArmPopUpTorpedoLauncher => {
653                *self == Self::PopUpTorpedoLauncher
654            }
655            UnitDefKind::CoreT1ShipConstructor | UnitDefKind::ArmT1ShipConstructor => {
656                *self == Self::T1ShipConstructor
657            }
658            UnitDefKind::CoreRessurectionSub | UnitDefKind::ArmRessurectionSub => {
659                *self == Self::RessurectionSub
660            }
661            UnitDefKind::CoreLightGunBoat | UnitDefKind::ArmLightGunBoat => {
662                *self == Self::LightGunBoat
663            }
664            UnitDefKind::CoreMissileCorvette | UnitDefKind::ArmMissileCorvette => {
665                *self == Self::MissileCorvette
666            }
667            UnitDefKind::CoreAssaultFrigate | UnitDefKind::ArmAssaultFrigate => {
668                *self == Self::AssaultFrigate
669            }
670            UnitDefKind::CoreDestroyer | UnitDefKind::ArmDestroyer => *self == Self::Destroyer,
671            UnitDefKind::CoreSub | UnitDefKind::ArmSub => *self == Self::Sub,
672            UnitDefKind::CoreT2ShipConstructor | UnitDefKind::ArmT2ShipConstructor => {
673                *self == Self::T2ShipConstructor
674            }
675            UnitDefKind::CoreNavalEngineer | UnitDefKind::ArmNavalEngineer => {
676                *self == Self::NavalEngineer
677            }
678            UnitDefKind::CoreCruiser | UnitDefKind::ArmCruiser => *self == Self::Cruiser,
679            UnitDefKind::CoreFastAssaultSubmarine | UnitDefKind::ArmFastAssaultSubmarine => {
680                *self == Self::FastAssaultSubmarine
681            }
682            UnitDefKind::CoreLongRangeBattleSubmarine
683            | UnitDefKind::ArmLongRangeBattleSubmarine => *self == Self::LongRangeBattleSubmarine,
684            UnitDefKind::CoreAntiAirShip | UnitDefKind::ArmAntiAirShip => {
685                *self == Self::AntiAirShip
686            }
687            UnitDefKind::CoreRadarJammerShip | UnitDefKind::ArmRadarJammerShip => {
688                *self == Self::RadarJammerShip
689            }
690            UnitDefKind::CoreAircraftCarrier | UnitDefKind::ArmAircraftCarrier => {
691                *self == Self::AircraftCarrier
692            }
693            UnitDefKind::CoreBattleship | UnitDefKind::ArmBattleship => *self == Self::Battleship,
694            UnitDefKind::CoreCruiseMissileShip | UnitDefKind::ArmCruiseMissileShip => {
695                *self == Self::CruiseMissileShip
696            }
697            UnitDefKind::CoreFlagship | UnitDefKind::ArmFlagship => *self == Self::Flagship,
698            UnitDefKind::CoreFloatingHeavyMine | UnitDefKind::ArmFloatingHeavyMine => {
699                *self == Self::FloatingHeavyMine
700            }
701            UnitDefKind::CoreUnderwaterExperimentalGantry
702            | UnitDefKind::ArmUnderwaterExperimentalGantry => {
703                *self == Self::UnderwaterExperimentalGantry
704            }
705            UnitDefKind::CoreUnderwaterFusionReactor | UnitDefKind::ArmUnderwaterFusionReactor => {
706                *self == Self::MetalStorage
707            }
708            UnitDefKind::CoreUnderwaterMetalConverter
709            | UnitDefKind::ArmUnderwaterMetalConverter => *self == Self::UnderwaterMetalConverter,
710            UnitDefKind::CoreUnderwaterEnergyConverter
711            | UnitDefKind::ArmUnderwaterEnergyConverter => *self == Self::UnderwaterEnergyConverter,
712            UnitDefKind::CoreAdvancedSonar | UnitDefKind::ArmAdvancedSonar => {
713                *self == Self::AdvancedSonar
714            }
715            UnitDefKind::CoreNavalAdvancedRadarTargeting
716            | UnitDefKind::ArmNavalAdvancedRadarTargeting => {
717                *self == Self::NavalAdvancedRadarTargeting
718            }
719            UnitDefKind::CoreAdvancedTorpedoLauncher | UnitDefKind::ArmAdvancedTorpedoLauncher => {
720                *self == Self::AdvancedTorpedoLauncher
721            }
722            UnitDefKind::CoreNavalAntiAirGun | UnitDefKind::ArmNavalAntiAirGun => {
723                *self == Self::NavalAntiAirGun
724            }
725            UnitDefKind::CoreFloatingMultiweaponPlatform
726            | UnitDefKind::ArmFloatingMultiweaponPlatform => {
727                *self == Self::FloatingMultiweaponPlatform
728            }
729            UnitDefKind::CoreSeaplaneConstructor | UnitDefKind::ArmSeaplaneConstructor => {
730                *self == Self::SeaplaneConstructor
731            }
732            UnitDefKind::CoreSeaplaneGunship | UnitDefKind::ArmSeaplaneGunship => {
733                *self == Self::SeaplaneGunship
734            }
735            UnitDefKind::CoreSeaplaneBomber | UnitDefKind::ArmSeaplaneBomber => {
736                *self == Self::SeaplaneBomber
737            }
738            UnitDefKind::CoreSeaplaneTorpedoGunship | UnitDefKind::ArmSeaplaneTorpedoGunship => {
739                *self == Self::SeaplaneTorpedoGunship
740            }
741            UnitDefKind::CoreSeaplaneFighter | UnitDefKind::ArmSeaplaneFighter => {
742                *self == Self::SeaplaneFighter
743            }
744            UnitDefKind::CoreSeaplaneRadarSonar | UnitDefKind::ArmSeaplaneRadarSonar => {
745                *self == Self::SeaplaneRadarSonar
746            }
747            UnitDefKind::CoreFlyingFortress
748            | UnitDefKind::ArmEMPBomber
749            | UnitDefKind::ArmAtomicBomber
750            | UnitDefKind::ArmRapidAssaultGunship
751            | UnitDefKind::ArmMediumRangeAntiAir
752            | UnitDefKind::ArmCloakedFusionReactor
753            | UnitDefKind::ArmTachyonAccelerator
754            | UnitDefKind::ArmEMPMissileLauncher
755            | UnitDefKind::ArmDecoyFusionReactor
756            | UnitDefKind::Unknown
757            | UnitDefKind::UnknownCurrent
758            | UnitDefKind::ArmAssaultCorvette
759            | UnitDefKind::ArmT2SupportShip => *self == Self::Unknown,
760        }
761    }
762}