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

1// "Whatever you do, work at it with all your heart, as working for the Lord,
2// not for human masters, since you know that you will receive an inheritance
3// from the Lord as a reward. It is the Lord Christ you are serving."
4// (Col 3:23-24)
5
6use std::{error::Error, str::FromStr};
7
8use serde::{Deserialize, Serialize};
9
10use crate::ai_interface::{callback::unit_def::UnitDef, AIInterface};
11
12#[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq, Serialize, Deserialize)]
13pub enum UnitDefKind {
14    // Commander
15    CoreCommander,
16    CoreWindTurbine,
17    CoreSolar,
18    CoreMetalStorage,
19    CoreEnergyStorage,
20    CoreMetalExtractor,
21    CoreEnergyConverter,
22    CoreBotLab,
23    CoreVehiclePlant,
24    CoreAirPlant,
25    CoreHovercraftPlatform,
26    CoreCamera,
27    CoreRadar,
28    CoreTeeth,
29    CoreLightLaserTower,
30    CoreLightAntiAir,
31    CoreFloatingLightAntiAir,
32    CoreTorpedoLauncher,
33    CoreUnderwaterMetalStorage,
34    CoreUnderwaterEnergyStorage,
35    CoreNavalEnergyConverter,
36    CoreShipyard,
37    CoreTidalGenerator,
38    CoreFloatingTeeth,
39    CoreFloatingRadar,
40    CoreFloatingHovercraftPlatform,
41    CoreOffshoreTorpedoLauncher,
42    // T1 Air Plant
43    CoreT1AirConstructor,
44    CoreT1AirScout,
45    CoreT1Fighter,
46    CoreT1Bomber,
47    CoreLightParalyzerDrone,
48    CoreT1AirTransport,
49    // T1 Air Constructor
50    CoreAdvancedSolar,
51    CoreGeothermalPowerplant,
52    CoreArmedMetalExtractor,
53    CoreAircraftRepairPad,
54    CoreUnderwaterAdvancedGeothermalPowerplant,
55    CoreAdvancedAircraftPlant,
56    CoreConstructionTurret,
57    CoreFlamethrowerTurret,
58    CoreAntiSwarmLaserTower,
59    CoreAreaControlLaserTower,
60    CoreArtillery,
61    CoreAntiAirMissle,
62    CoreRadarJammer,
63    CoreAntiRadar,
64    // T2 Air Plant
65    CoreT2AirConstructor,
66    CoreRadarSonarAircraft,
67    CoreStealthFighter,
68    CoreGunship,
69    CoreFlyingFortress,
70    CoreStrategicBomber,
71    CoreTorpedoBomber,
72    CoreHeavyTransport,
73    // T2 Air Constructor
74    CoreFusionReactor,
75    CoreAdvancedFusionReactor,
76    CoreAdvancedGeothermalPowerplant,
77    CoreGeothermalWeapon,
78    CoreAdvancedMetalExtractor,
79    CoreAdvancedArmoredMetalExtractor,
80    CoreWaterAircraftRepairPad,
81    CoreHardenedEnergyStorage,
82    CoreHardenedMetalStorage,
83    CoreAdvancedRadar,
84    CoreLongRangeJammer,
85    CoreFortificationWall,
86    CoreAdvancedEnergyConverter,
87    CoreIntrusionDetector,
88    CorePlasmaDeflector,
89    CoreEnergyWeapon,
90    CoreRadarTargeting,
91    CorePopUpBattery,
92    CorePopUpPlasmaArtillery,
93    CoreAntiAirFlak,
94    CoreLongRangeAntiAir,
95    CoreSeaplanePlatform,
96    CoreTacticalMissileLauncher,
97    CoreNuclearSilo,
98    CoreAntiNukeLauncher,
99    CoreLongRangePlasmaCannon,
100    CoreRapidFireLongRangePlasmaCannon,
101    CoreExperimentalGantry,
102    // T1 Bot Lab
103    CoreT1BotConstructor,
104    CoreT1RessurectionBot,
105    CoreFastInfantryBot,
106    CoreRocketBot,
107    CoreLightPlasmaBot,
108    CoreAmphibiousAntiAirBot,
109    // T1 Bot Constructor
110    CoreAdvancedBotLab,
111    // T2 Bot Lab
112    CoreT2BotConstructor,
113    CoreFastAssaultBot,
114    CoreAmphibiousBot,
115    CoreHeavilyArmoredAssaultBot,
116    CoreArmoredAssaultBot,
117    CoreSpiderBot,
118    CoreMortarBot,
119    CoreCrawlingBomb,
120    CoreHeavyRocketBot,
121    CoreAdvancedCrawlingBomb,
122    CoreDecoyCommander,
123    CoreRadarBot,
124    CoreSpyBot,
125    CoreStealthBot,
126    CoreCombatEngineer,
127    CoreJammerBot,
128    CoreHeavyAntiAir,
129    // Stealth Bot
130    // T2 Bot Constructor
131    // T1 Vehicle Plant
132    CoreT1VehicleConstructor,
133    CoreAmphibiousConstructor,
134    CoreMinelayer,
135    CoreLightScoutVehicle,
136    CoreLightTank,
137    CoreLightAmphibiousTank,
138    CoreMediumAssaultTank,
139    CoreLightMobileArtillery,
140    CoreMissileTruck,
141    CoreAntiSwarmTank,
142    // T1 Minelayer
143    CoreLightMine,
144    CoreMediumMine,
145    CoreHeavyMine,
146    // T1 Vehicle Constructor
147    CoreAdvancedVehiclePlant,
148    // T2 Vehicle Plant
149    CoreT2VehicleConstructor,
150    CoreRadarJammerVehicle,
151    CoreHeavyAssaultTank,
152    CoreStealthyRocketLauncher,
153    CoreHeavyMissileTank,
154    CoreMobileArtilleryTank,
155    CoreHeavyArtilleryTank,
156    CoreVeryHeavyAssaultTank,
157    CoreMediumAmphibiousTank,
158    CoreVeryHeavyAmphibiousTank,
159    CoreAntiAirFlakTank,
160    CoreAntiNukeTank,
161    CoreRadarVehicle,
162    // Experimental Gantry
163    CoreMobileHeavyTurretExperimental,
164    CoreAllTerrainAssaultExperimental,
165    CoreAssaultBotExperimental,
166    CoreAmphibiousSiegeExperimental,
167    CoreHeavyRocketExperimental,
168    CoreHeavyLaserHovertankExperimental,
169    // T1 Hovercraft Plant
170    CoreT1HovercraftConstructor,
171    CoreFastAttackHovertank,
172    CoreHovertank,
173    CoreAssaultHovertank,
174    CoreRocketHovertank,
175    CoreAntiAirHovertank,
176    // T1 Hovercraft Constructor
177    CoreNavalConstructionTurret,
178    CoreAmphibiousComplex,
179    CoreFloatingHeavyLaserTower,
180    CoreAdvancedShipyard,
181    CoreUnderwaterGeothermalPowerplant,
182    // T1 Amphibious Constructor
183    CorePopUpTorpedoLauncher,
184    // T1 Shipyard
185    CoreT1ShipConstructor,
186    CoreRessurectionSub,
187    CoreLightGunBoat,
188    CoreMissileCorvette,
189    CoreAssaultFrigate,
190    CoreDestroyer,
191    CoreSub,
192    // T1 Ship Constructor
193    // T2 Shipyard
194    CoreT2ShipConstructor,
195    CoreNavalEngineer,
196    CoreCruiser,
197    CoreFastAssaultSubmarine,
198    CoreLongRangeBattleSubmarine,
199    CoreAntiAirShip,
200    CoreRadarJammerShip,
201    CoreAircraftCarrier,
202    CoreBattleship,
203    CoreCruiseMissileShip,
204    CoreFlagship,
205    // Naval Engineer
206    CoreFloatingHeavyMine,
207    // T2 Ship Constructor
208    CoreUnderwaterExperimentalGantry,
209    CoreUnderwaterFusionReactor,
210    CoreUnderwaterMetalConverter,
211    CoreUnderwaterEnergyConverter,
212    CoreAdvancedSonar,
213    CoreNavalAdvancedRadarTargeting,
214    CoreAdvancedTorpedoLauncher,
215    CoreNavalAntiAirGun,
216    CoreFloatingMultiweaponPlatform,
217    // T1 Seaplane Plant
218    CoreSeaplaneConstructor,
219    CoreSeaplaneGunship,
220    CoreSeaplaneBomber,
221    CoreSeaplaneTorpedoGunship,
222    CoreSeaplaneFighter,
223    CoreSeaplaneRadarSonar,
224    // T1 Seaplane Constructor
225    // Arm Commander
226    ArmCommander,
227    ArmWindTurbine,
228    ArmSolar,
229    ArmMetalStorage,
230    ArmEnergyStorage,
231    ArmMetalExtractor,
232    ArmEnergyConverter,
233    ArmBotLab,
234    ArmVehiclePlant,
235    ArmAirPlant,
236    ArmHovercraftPlatform,
237    ArmCamera,
238    ArmRadar,
239    ArmTeeth,
240    ArmLightLaserTower,
241    ArmLightAntiAir,
242    ArmFloatingLightAntiAir,
243    ArmTorpedoLauncher,
244    ArmUnderwaterMetalStorage,
245    ArmUnderwaterEnergyStorage,
246    ArmNavalEnergyConverter,
247    ArmShipyard,
248    ArmTidalGenerator,
249    ArmFloatingTeeth,
250    ArmFloatingRadar,
251    ArmFloatingHovercraftPlatform,
252    ArmOffshoreTorpedoLauncher,
253    // T1 Air Plant
254    ArmT1AirConstructor,
255    ArmT1AirScout,
256    ArmT1Fighter,
257    ArmT1Bomber,
258    ArmLightParalyzerDrone,
259    ArmT1AirTransport,
260    // T1 Air Constructor
261    ArmAdvancedSolar,
262    ArmGeothermalPowerplant,
263    ArmArmedMetalExtractor,
264    ArmAircraftRepairPad,
265    ArmUnderwaterAdvancedGeothermalPowerplant,
266    ArmAdvancedAircraftPlant,
267    ArmConstructionTurret,
268    ArmRadarJammer,
269    ArmAntiRadar,
270    ArmLightningTurret,
271    ArmLaserTurret,
272    ArmAreaControlPlasmaArtillery,
273    ArmPopUpAntiAirMissileBattery,
274    ArmMediumRangeAntiAir,
275    ArmAreaControlLaserTower,
276    // T2 Air Plant
277    ArmT2AirConstructor,
278    ArmRadarSonarAircraft,
279    ArmStealthFighter,
280    ArmGunship,
281    ArmAtomicBomber,
282    ArmStrategicBomber,
283    ArmTorpedoBomber,
284    ArmHeavyTransport,
285    ArmRapidAssaultGunship,
286    ArmEMPBomber,
287    // T2 Air Constructor
288    ArmFusionReactor,
289    ArmAdvancedFusionReactor,
290    ArmCloakedFusionReactor,
291    ArmAdvancedGeothermalPowerplant,
292    ArmGeothermalWeapon,
293    ArmAdvancedMetalExtractor,
294    ArmAdvancedArmoredMetalExtractor,
295    ArmWaterAircraftRepairPad,
296    ArmHardenedEnergyStorage,
297    ArmHardenedMetalStorage,
298    ArmAdvancedRadar,
299    ArmLongRangeJammer,
300    ArmFortificationWall,
301    ArmAdvancedEnergyConverter,
302    ArmIntrusionDetector,
303    ArmPlasmaDeflector,
304    ArmEnergyWeapon,
305    ArmRadarTargeting,
306    ArmPopUpBattery,
307    ArmPopUpPlasmaArtillery,
308    ArmAntiAirFlak,
309    ArmLongRangeAntiAir,
310    ArmSeaplanePlatform,
311    ArmEMPMissileLauncher,
312    ArmTacticalMissileLauncher,
313    ArmNuclearSilo,
314    ArmAntiNukeLauncher,
315    ArmDecoyFusionReactor,
316    ArmLongRangePlasmaCannon,
317    ArmRapidFireLongRangePlasmaCannon,
318    ArmExperimentalGantry,
319    ArmTachyonAccelerator,
320    // T1 Bot Lab
321    ArmT1BotConstructor,
322    ArmT1RessurectionBot,
323    ArmFastInfantryBot,
324    ArmRocketBot,
325    ArmLightPlasmaBot,
326    ArmAmphibiousAntiAirBot,
327    // T1 Bot Constructor
328    ArmAdvancedBotLab,
329    // T2 Bot Lab
330    ArmT2BotConstructor,
331    ArmFastAssaultBot,
332    ArmAmphibiousBot,
333    ArmHeavilyArmoredAssaultBot,
334    ArmArmoredAssaultBot,
335    ArmSpiderBot,
336    ArmMortarBot,
337    ArmCrawlingBomb,
338    ArmHeavyRocketBot,
339    ArmAdvancedCrawlingBomb,
340    ArmDecoyCommander,
341    ArmRadarBot,
342    ArmSpyBot,
343    ArmStealthBot,
344    ArmCombatEngineer,
345    ArmJammerBot,
346    ArmHeavyAntiAir,
347    // Stealth Bot
348    // T2 Bot Constructor
349    // T1 Vehicle Plant
350    ArmT1VehicleConstructor,
351    ArmAmphibiousConstructor,
352    ArmMinelayer,
353    ArmLightScoutVehicle,
354    ArmLightTank,
355    ArmLightAmphibiousTank,
356    ArmMediumAssaultTank,
357    ArmLightMobileArtillery,
358    ArmMissileTruck,
359    ArmAntiSwarmTank,
360    // T1 Minelayer
361    ArmLightMine,
362    ArmMediumMine,
363    ArmHeavyMine,
364    // T1 Vehicle Constructor
365    ArmAdvancedVehiclePlant,
366    // T2 Vehicle Plant
367    ArmT2VehicleConstructor,
368    ArmRadarJammerVehicle,
369    ArmHeavyAssaultTank,
370    ArmStealthyRocketLauncher,
371    ArmHeavyMissileTank,
372    ArmMobileArtilleryTank,
373    ArmHeavyArtilleryTank,
374    ArmVeryHeavyAssaultTank,
375    ArmMediumAmphibiousTank,
376    ArmHeavyAmphibiousTank,
377    ArmAntiAirFlakTank,
378    ArmAntiNukeTank,
379    ArmRadarVehicle,
380    ArmVeryHeavyAmphibiousTank,
381    // Experimental Gantry
382    ArmMobileHeavyTurretExperimental,
383    ArmAllTerrainAssaultExperimental,
384    ArmAssaultBotExperimental,
385    ArmAmphibiousSiegeExperimental,
386    ArmHeavyRocketExperimental,
387    ArmHeavyLaserHovertankExperimental,
388    // T1 Hovercraft Plant
389    ArmT1HovercraftConstructor,
390    ArmFastAttackHovertank,
391    ArmHovertank,
392    ArmAssaultHovertank,
393    ArmRocketHovertank,
394    ArmAntiAirHovertank,
395    // T1 Hovercraft Constructor
396    ArmNavalConstructionTurret,
397    ArmAmphibiousComplex,
398    ArmFloatingHeavyLaserTower,
399    ArmAdvancedShipyard,
400    ArmUnderwaterGeothermalPowerplant,
401    // T1 Amphibious Constructor
402    ArmPopUpTorpedoLauncher,
403    // T1 Shipyard
404    ArmT1ShipConstructor,
405    ArmRessurectionSub,
406    ArmLightGunBoat,
407    ArmMissileCorvette,
408    ArmAssaultFrigate,
409    ArmAssaultCorvette,
410    ArmDestroyer,
411    ArmSub,
412    // T1 Ship Constructor
413    // T2 Shipyard
414    ArmT2ShipConstructor,
415    ArmNavalEngineer,
416    ArmCruiser,
417    ArmFastAssaultSubmarine,
418    ArmLongRangeBattleSubmarine,
419    ArmAntiAirShip,
420    ArmRadarJammerShip,
421    ArmAircraftCarrier,
422    ArmBattleship,
423    ArmCruiseMissileShip,
424    ArmFlagship,
425    ArmT2SupportShip,
426    // Naval Engineer
427    ArmFloatingHeavyMine,
428    // T2 Ship Constructor
429    ArmUnderwaterExperimentalGantry,
430    ArmUnderwaterFusionReactor,
431    ArmUnderwaterMetalConverter,
432    ArmUnderwaterEnergyConverter,
433    ArmAdvancedSonar,
434    ArmNavalAdvancedRadarTargeting,
435    ArmAdvancedTorpedoLauncher,
436    ArmNavalAntiAirGun,
437    ArmFloatingMultiweaponPlatform,
438    // T1 Seaplane Plant
439    ArmSeaplaneConstructor,
440    ArmSeaplaneGunship,
441    ArmSeaplaneBomber,
442    ArmSeaplaneTorpedoGunship,
443    ArmSeaplaneFighter,
444    ArmSeaplaneRadarSonar,
445    // T1 Seaplane Constructor
446    Unknown,
447    UnknownCurrent,
448}
449
450impl UnitDefKind {
451    pub fn to_unit_def(
452        &self,
453        ai_interface: AIInterface,
454    ) -> Result<Option<UnitDef>, Box<dyn Error>> {
455        let mut ret = None;
456        for def in ai_interface.unit_interface().get_unit_definitions()? {
457            if &def.kind()? == self {
458                ret = Some(def);
459            }
460        }
461
462        Ok(ret)
463    }
464}
465
466impl PartialEq<UnitDef> for UnitDefKind {
467    fn eq(&self, other: &UnitDef) -> bool {
468        self == &Self::from_str(&other.name().unwrap_or(String::new()))
469            .unwrap_or(UnitDefKind::Unknown)
470    }
471}
472
473impl PartialEq<UnitDefKind> for UnitDef {
474    fn eq(&self, other: &UnitDefKind) -> bool {
475        other
476            == &UnitDefKind::from_str(&self.name().unwrap_or(String::new()))
477                .unwrap_or(UnitDefKind::Unknown)
478    }
479}
480
481impl FromStr for UnitDefKind {
482    type Err = String;
483
484    fn from_str(s: &str) -> Result<Self, Self::Err> {
485        Ok(match s {
486            "corcom" => UnitDefKind::CoreCommander,
487            // Commander
488            "corsolar" => UnitDefKind::CoreSolar,
489            "corwin" => UnitDefKind::CoreWindTurbine,
490            "cormstor" => UnitDefKind::CoreMetalStorage,
491            "corestor" => UnitDefKind::CoreEnergyStorage,
492            "cormex" => UnitDefKind::CoreMetalExtractor,
493            "cormakr" => UnitDefKind::CoreEnergyConverter,
494            "corlab" => UnitDefKind::CoreBotLab,
495            "corvp" => UnitDefKind::CoreVehiclePlant,
496            "corap" => UnitDefKind::CoreAirPlant,
497            "coreyes" => UnitDefKind::CoreCamera,
498            "corrad" | "corerad" => UnitDefKind::CoreRadar,
499            "cordrag" => UnitDefKind::CoreTeeth,
500            "corllt" => UnitDefKind::CoreLightLaserTower,
501            "corrl" => UnitDefKind::CoreLightAntiAir,
502            "cordl" => UnitDefKind::CoreFloatingLightAntiAir,
503            "cortide" => UnitDefKind::CoreTidalGenerator,
504            "coruwms" => UnitDefKind::CoreUnderwaterMetalStorage,
505            "coruwes" => UnitDefKind::CoreUnderwaterEnergyStorage,
506            "corfmkr" => UnitDefKind::CoreNavalEnergyConverter,
507            "corsy" => UnitDefKind::CoreShipyard,
508            "corfdrag" => UnitDefKind::CoreFloatingTeeth,
509            "cortl" => UnitDefKind::CoreTorpedoLauncher,
510            "corfrt" => UnitDefKind::CoreOffshoreTorpedoLauncher,
511            "corfrad" => UnitDefKind::CoreFloatingRadar,
512            "corhp" => UnitDefKind::CoreHovercraftPlatform,
513            "corfhp" => UnitDefKind::CoreFloatingHovercraftPlatform,
514            // T1 Air Plant
515            "corca" => UnitDefKind::CoreT1AirConstructor,
516            "corfink" => UnitDefKind::CoreT1AirScout,
517            "corveng" => UnitDefKind::CoreT1Fighter,
518            "corshad" => UnitDefKind::CoreT1Bomber,
519            "corvalk" => UnitDefKind::CoreLightParalyzerDrone,
520            "corbw" => UnitDefKind::CoreT1AirTransport,
521            // T1 Air Constructor
522            "coradvsol" => UnitDefKind::CoreAdvancedSolar,
523            "corgeo" => UnitDefKind::CoreGeothermalPowerplant,
524            "corexp" => UnitDefKind::CoreArmedMetalExtractor,
525            "corasp" => UnitDefKind::CoreAircraftRepairPad,
526            "coraap" => UnitDefKind::CoreAdvancedAircraftPlant,
527            "cornanotc" => UnitDefKind::CoreConstructionTurret,
528            "cormaw" => UnitDefKind::CoreFlamethrowerTurret,
529            "corhllt" => UnitDefKind::CoreAntiSwarmLaserTower,
530            "corhlt" => UnitDefKind::CoreAreaControlLaserTower,
531            "corpun" => UnitDefKind::CoreArtillery,
532            "cormadsam" => UnitDefKind::CoreAntiAirMissle,
533            "corjamt" => UnitDefKind::CoreRadarJammer,
534            "corjuno" => UnitDefKind::CoreAntiRadar,
535            // T2 Air Plant
536            "coraca" => UnitDefKind::CoreT2AirConstructor,
537            "corape" => UnitDefKind::CoreGunship,
538            "corhurc" => UnitDefKind::CoreStrategicBomber,
539            "cortitan" => UnitDefKind::CoreTorpedoBomber,
540            "corvamp" => UnitDefKind::CoreStealthFighter,
541            "corawac" => UnitDefKind::CoreRadarSonarAircraft,
542            "corseah" => UnitDefKind::CoreHeavyTransport,
543            "corcrw" => UnitDefKind::CoreFlyingFortress,
544            // T2 Air Constructor
545            "corfus" => UnitDefKind::CoreFusionReactor,
546            "corafus" => UnitDefKind::CoreAdvancedFusionReactor,
547            "corageo" => UnitDefKind::CoreAdvancedGeothermalPowerplant,
548            "coruwageo" => UnitDefKind::CoreGeothermalWeapon,
549            "corbhmth" => UnitDefKind::CoreUnderwaterAdvancedGeothermalPowerplant,
550            "cormoho" => UnitDefKind::CoreAdvancedMetalExtractor,
551            "cormexp" => UnitDefKind::CoreAdvancedArmoredMetalExtractor,
552            "cormmkr" => UnitDefKind::CoreAdvancedEnergyConverter,
553            "coruwadves" => UnitDefKind::CoreHardenedEnergyStorage,
554            "coruwadvms" => UnitDefKind::CoreHardenedMetalStorage,
555            "corarad" => UnitDefKind::CoreAdvancedRadar,
556            "corshroud" => UnitDefKind::CoreLongRangeJammer,
557            "corfort" => UnitDefKind::CoreFortificationWall,
558            "corfasp" => UnitDefKind::CoreWaterAircraftRepairPad,
559            "cortarg" => UnitDefKind::CoreRadarTargeting,
560            "corsd" => UnitDefKind::CoreIntrusionDetector,
561            "corgate" => UnitDefKind::CorePlasmaDeflector,
562            "cortoast" => UnitDefKind::CorePopUpPlasmaArtillery,
563            "corvipe" => UnitDefKind::CorePopUpBattery,
564            "cordoom" => UnitDefKind::CoreEnergyWeapon,
565            "corflak" => UnitDefKind::CoreAntiAirFlak,
566            "corscreamer" => UnitDefKind::CoreLongRangeAntiAir,
567            "cortron" => UnitDefKind::CoreTacticalMissileLauncher,
568            "corfmd" => UnitDefKind::CoreAntiNukeLauncher,
569            "corsilo" => UnitDefKind::CoreNuclearSilo,
570            "corint" => UnitDefKind::CoreLongRangePlasmaCannon,
571            "corbuzz" => UnitDefKind::CoreRapidFireLongRangePlasmaCannon,
572            "corplat" => UnitDefKind::CoreSeaplanePlatform,
573            "corgant" => UnitDefKind::CoreExperimentalGantry,
574            // T1 Bot Lab
575            "corck" => UnitDefKind::CoreT1BotConstructor,
576            "corak" => UnitDefKind::CoreFastInfantryBot,
577            "cornecro" => UnitDefKind::CoreT1RessurectionBot,
578            "corstorm" => UnitDefKind::CoreRocketBot,
579            "corthud" => UnitDefKind::CoreLightPlasmaBot,
580            "corcrash" => UnitDefKind::CoreAmphibiousAntiAirBot,
581            // T1 Bot Constructor
582            "coralab" => UnitDefKind::CoreAdvancedBotLab,
583            // T2 Bot Lab
584            "corack" => UnitDefKind::CoreT2BotConstructor,
585            "armconsul" => UnitDefKind::CoreCombatEngineer,
586            "corpyro" => UnitDefKind::CoreFastAssaultBot,
587            "coramph" => UnitDefKind::CoreAmphibiousBot,
588            "corcan" => UnitDefKind::CoreArmoredAssaultBot,
589            "corsumo" => UnitDefKind::CoreHeavilyArmoredAssaultBot,
590            "cortermite" => UnitDefKind::CoreSpiderBot,
591            "cormort" => UnitDefKind::CoreMortarBot,
592            "corhrk" => UnitDefKind::CoreHeavyRocketBot,
593            "coraak" => UnitDefKind::CoreHeavyAntiAir,
594            "corroach" => UnitDefKind::CoreCrawlingBomb,
595            "corsktl" => UnitDefKind::CoreAdvancedCrawlingBomb,
596            "cordecom" => UnitDefKind::CoreDecoyCommander,
597            "corvoyr" => UnitDefKind::CoreRadarBot,
598            "corspy" => UnitDefKind::CoreSpyBot,
599            "corspec" => UnitDefKind::CoreJammerBot,
600            "cormando" => UnitDefKind::CoreStealthBot,
601            // T2 Bot Constructor
602            // T1 Vehicle Plant
603            "corcv" => UnitDefKind::CoreT1VehicleConstructor,
604            "cormuskrat" => UnitDefKind::CoreAmphibiousConstructor,
605            "cormlv" => UnitDefKind::CoreMinelayer,
606            "corfav" => UnitDefKind::CoreLightScoutVehicle,
607            "corgator" => UnitDefKind::CoreLightTank,
608            "corgarp" => UnitDefKind::CoreLightAmphibiousTank,
609            "corraid" => UnitDefKind::CoreMediumAssaultTank,
610            "corlevlr" => UnitDefKind::CoreAntiSwarmTank,
611            "corwolv" => UnitDefKind::CoreLightMobileArtillery,
612            "cormist" => UnitDefKind::CoreMissileTruck,
613            // T1 Minelayer
614            "cormine1" => UnitDefKind::CoreLightMine,
615            "cormine2" | "cormine4" => UnitDefKind::CoreMediumMine,
616            "cormine3" => UnitDefKind::CoreHeavyMine,
617            // T1 Vehicle Constructor
618            "coravp" => UnitDefKind::CoreAdvancedVehiclePlant,
619            // T2 Vehicle Plant
620            "coracv" => UnitDefKind::CoreT2VehicleConstructor,
621            "corseal" => UnitDefKind::CoreMediumAmphibiousTank,
622            "correap" => UnitDefKind::CoreHeavyAssaultTank,
623            "corparrow" => UnitDefKind::CoreVeryHeavyAmphibiousTank,
624            "corgol" => UnitDefKind::CoreVeryHeavyAssaultTank,
625            "corban" => UnitDefKind::CoreHeavyMissileTank,
626            "cormart" => UnitDefKind::CoreMobileArtilleryTank,
627            "corvroc" => UnitDefKind::CoreStealthyRocketLauncher,
628            "cortrem" => UnitDefKind::CoreHeavyArtilleryTank,
629            "corsent" => UnitDefKind::CoreAntiAirFlakTank,
630            "cormabm" => UnitDefKind::CoreAntiNukeTank,
631            "coreter" => UnitDefKind::CoreRadarJammerVehicle,
632            "corvrad" => UnitDefKind::CoreRadarVehicle,
633            // Experimental Gantry
634            "corkorg" => UnitDefKind::CoreMobileHeavyTurretExperimental,
635            "corkarg" => UnitDefKind::CoreAllTerrainAssaultExperimental,
636            "corjugg" => UnitDefKind::CoreAssaultBotExperimental,
637            "corshiva" => UnitDefKind::CoreAmphibiousSiegeExperimental,
638            "corcat" => UnitDefKind::CoreHeavyRocketExperimental,
639            "corsok" => UnitDefKind::CoreHeavyLaserHovertankExperimental,
640            // T1 Hovercraft Platform
641            "corch" => UnitDefKind::CoreT1HovercraftConstructor,
642            "corsh" => UnitDefKind::CoreFastAttackHovertank,
643            "corsnap" => UnitDefKind::CoreHovertank,
644            "corah" => UnitDefKind::CoreAntiAirHovertank,
645            "cormh" => UnitDefKind::CoreRocketHovertank,
646            "corhal" => UnitDefKind::CoreAssaultHovertank,
647            // T1 Hovercraft Constructor
648            "cornanotcplat" => UnitDefKind::CoreNavalConstructionTurret,
649            "coramsub" => UnitDefKind::CoreAmphibiousComplex,
650            "corfhlt" => UnitDefKind::CoreFloatingHeavyLaserTower,
651            "corasy" => UnitDefKind::CoreAdvancedShipyard,
652            "coruwgeo" => UnitDefKind::CoreUnderwaterGeothermalPowerplant,
653            // T1 Amphibious Constructor
654            "corptl" => UnitDefKind::CorePopUpTorpedoLauncher,
655            // T1 Shipyard
656            "corcs" => UnitDefKind::CoreT1ShipConstructor,
657            "correcl" => UnitDefKind::CoreRessurectionSub,
658            "coresupp" => UnitDefKind::CoreLightGunBoat,
659            "corpt" => UnitDefKind::CoreMissileCorvette,
660            "corpship" => UnitDefKind::CoreAssaultFrigate,
661            "corroy" => UnitDefKind::CoreDestroyer,
662            "corsub" => UnitDefKind::CoreSub,
663            // T1 Ship Constructor
664            // T2 Shipyard
665            "coracsub" => UnitDefKind::CoreT2ShipConstructor,
666            "cormls" => UnitDefKind::CoreNavalEngineer,
667            "corcrus" => UnitDefKind::CoreCruiser,
668            "corshark" => UnitDefKind::CoreFastAssaultSubmarine,
669            "corssub" => UnitDefKind::CoreLongRangeBattleSubmarine,
670            "corarch" => UnitDefKind::CoreAntiAirShip,
671            "corsjam" => UnitDefKind::CoreRadarJammerShip,
672            "corcarry" => UnitDefKind::CoreAircraftCarrier,
673            "corbats" => UnitDefKind::CoreBattleship,
674            "cormship" => UnitDefKind::CoreCruiseMissileShip,
675            "corblackhy" => UnitDefKind::CoreFlagship,
676            // Naval Engineer
677            "corfmine3" => UnitDefKind::CoreFloatingHeavyMine,
678            // T2 Ship Constructor
679            "coruwfus" => UnitDefKind::CoreUnderwaterFusionReactor,
680            "coruwmmm" => UnitDefKind::CoreUnderwaterEnergyConverter,
681            "coruwmme" => UnitDefKind::CoreUnderwaterMetalConverter,
682            "corgantuw" => UnitDefKind::CoreUnderwaterExperimentalGantry,
683            "corason" => UnitDefKind::CoreAdvancedSonar,
684            "corfatf" => UnitDefKind::CoreNavalAdvancedRadarTargeting,
685            "coratl" => UnitDefKind::CoreAdvancedTorpedoLauncher,
686            "corenaa" => UnitDefKind::CoreNavalAntiAirGun,
687            "corfdoom" => UnitDefKind::CoreFloatingMultiweaponPlatform,
688            // T1 Seaplane Plant
689            "corcsa" => UnitDefKind::CoreSeaplaneConstructor,
690            "corcut" => UnitDefKind::CoreSeaplaneGunship,
691            "corsb" => UnitDefKind::CoreSeaplaneBomber,
692            "corseap" => UnitDefKind::CoreSeaplaneTorpedoGunship,
693            "corsfig" => UnitDefKind::CoreSeaplaneFighter,
694            "corhunt" => UnitDefKind::CoreSeaplaneRadarSonar,
695            // T1 Seaplane Constructor
696            "armcom" => UnitDefKind::ArmCommander,
697            // Commander
698            "armsolar" => UnitDefKind::ArmSolar,
699            "armwin" => UnitDefKind::ArmWindTurbine,
700            "armmstor" => UnitDefKind::ArmMetalStorage,
701            "armestor" => UnitDefKind::ArmEnergyStorage,
702            "armmex" => UnitDefKind::ArmMetalExtractor,
703            "armmakr" => UnitDefKind::ArmEnergyConverter,
704            "armlab" => UnitDefKind::ArmBotLab,
705            "armvp" => UnitDefKind::ArmVehiclePlant,
706            "armap" => UnitDefKind::ArmAirPlant,
707            "armeyes" => UnitDefKind::ArmCamera,
708            "armrad" => UnitDefKind::ArmRadar,
709            "armdrag" => UnitDefKind::ArmTeeth,
710            "armllt" => UnitDefKind::ArmLightLaserTower,
711            "armrl" => UnitDefKind::ArmLightAntiAir,
712            "armdl" => UnitDefKind::ArmTorpedoLauncher,
713            "armtide" => UnitDefKind::ArmTidalGenerator,
714            "armuwms" => UnitDefKind::ArmUnderwaterMetalStorage,
715            "armuwes" => UnitDefKind::ArmUnderwaterEnergyStorage,
716            "armfmkr" => UnitDefKind::ArmNavalEnergyConverter,
717            "armsy" => UnitDefKind::ArmShipyard,
718            "armfdrag" => UnitDefKind::ArmFloatingTeeth,
719            "armtl" => UnitDefKind::ArmOffshoreTorpedoLauncher,
720            "armfrad" => UnitDefKind::ArmFloatingRadar,
721            "armhp" => UnitDefKind::ArmHovercraftPlatform,
722            "armfhp" => UnitDefKind::ArmFloatingHovercraftPlatform,
723            // T1 Air Plant
724            "armca" => UnitDefKind::ArmT1AirConstructor,
725            "armpeep" => UnitDefKind::ArmT1AirScout,
726            "armfig" => UnitDefKind::ArmT1Fighter,
727            "armthund" => UnitDefKind::ArmT1Bomber,
728            "armkam" => UnitDefKind::ArmLightParalyzerDrone,
729            "armatlas" => UnitDefKind::ArmT1AirTransport,
730            // T1 Air Constructor
731            "armadvsol" => UnitDefKind::ArmAdvancedSolar,
732            "armgeo" => UnitDefKind::ArmGeothermalPowerplant,
733            "armamex" => UnitDefKind::ArmArmedMetalExtractor,
734            "armasp" => UnitDefKind::ArmAircraftRepairPad,
735            "armaap" => UnitDefKind::ArmAdvancedAircraftPlant,
736            "armnanotc" => UnitDefKind::ArmConstructionTurret,
737            "armhlt" => UnitDefKind::ArmAreaControlLaserTower,
738            "armjamt" => UnitDefKind::ArmRadarJammer,
739            "armjuno" => UnitDefKind::ArmAntiRadar,
740            "armclaw" => UnitDefKind::ArmLightningTurret,
741            "armbeamer" => UnitDefKind::ArmLaserTurret,
742            "armguard" => UnitDefKind::ArmAreaControlPlasmaArtillery,
743            "armferret" => UnitDefKind::ArmPopUpAntiAirMissileBattery,
744            "armcir" => UnitDefKind::ArmMediumRangeAntiAir,
745            // T2 Air Plant
746            "armaca" => UnitDefKind::ArmT2AirConstructor,
747            "armbrawl" => UnitDefKind::ArmGunship,
748            "armpnix" => UnitDefKind::ArmStrategicBomber,
749            "armlance" => UnitDefKind::ArmTorpedoBomber,
750            "armhawk" => UnitDefKind::ArmStealthFighter,
751            "armawac" => UnitDefKind::ArmRadarSonarAircraft,
752            "armdfly" => UnitDefKind::ArmHeavyTransport,
753            "armblade" => UnitDefKind::ArmRapidAssaultGunship,
754            "armstil" => UnitDefKind::ArmEMPBomber,
755            "armliche" => UnitDefKind::ArmAtomicBomber,
756            // T2 Air Constructor
757            "armfus" => UnitDefKind::ArmFusionReactor,
758            "armafus" => UnitDefKind::ArmAdvancedFusionReactor,
759            "armckfus" => UnitDefKind::ArmCloakedFusionReactor,
760            "armageo" => UnitDefKind::ArmAdvancedGeothermalPowerplant,
761            "armgmm" => UnitDefKind::Unknown,
762            "armuwageo" => UnitDefKind::ArmGeothermalWeapon,
763            "armbhmth" => UnitDefKind::ArmUnderwaterAdvancedGeothermalPowerplant,
764            "armmoho" => UnitDefKind::ArmAdvancedMetalExtractor,
765            "armmexp" => UnitDefKind::ArmAdvancedArmoredMetalExtractor,
766            "armmmkr" => UnitDefKind::ArmAdvancedEnergyConverter,
767            "armuwadves" => UnitDefKind::ArmHardenedEnergyStorage,
768            "armuwadvms" => UnitDefKind::ArmHardenedMetalStorage,
769            "armarad" => UnitDefKind::ArmAdvancedRadar,
770            "armveil" => UnitDefKind::ArmLongRangeJammer,
771            "armfort" => UnitDefKind::ArmFortificationWall,
772            "armfasp" => UnitDefKind::ArmWaterAircraftRepairPad,
773            "armtarg" => UnitDefKind::ArmRadarTargeting,
774            "armsd" => UnitDefKind::ArmIntrusionDetector,
775            "armgate" => UnitDefKind::ArmPlasmaDeflector,
776            "armamb" => UnitDefKind::ArmPopUpPlasmaArtillery,
777            "armpb" => UnitDefKind::UnknownCurrent,
778            "armanni" => UnitDefKind::ArmTachyonAccelerator,
779            "armtoast" => UnitDefKind::Unknown,
780            "armvipe" => UnitDefKind::ArmPopUpBattery,
781            "armdoom" => UnitDefKind::ArmEnergyWeapon,
782            "armflak" => UnitDefKind::ArmAntiAirFlak,
783            "armmercury" => UnitDefKind::ArmLongRangeAntiAir,
784            "armemp" => UnitDefKind::ArmEMPMissileLauncher,
785            "armamd" => UnitDefKind::ArmAntiNukeLauncher,
786            "armscreamer" => UnitDefKind::Unknown,
787            "armtron" => UnitDefKind::ArmTacticalMissileLauncher,
788            "armsilo" => UnitDefKind::ArmNuclearSilo,
789            "armbrtha" => UnitDefKind::ArmLongRangePlasmaCannon,
790            "armvulc" => UnitDefKind::Unknown,
791            "armdf" => UnitDefKind::ArmDecoyFusionReactor,
792            "armbuzz" => UnitDefKind::ArmRapidFireLongRangePlasmaCannon,
793            "armplat" => UnitDefKind::ArmSeaplanePlatform,
794            "armshltx" => UnitDefKind::Unknown,
795            "armgant" => UnitDefKind::ArmExperimentalGantry,
796            // T1 Bot Lab
797            "armck" => UnitDefKind::ArmT1BotConstructor,
798            "armak" => UnitDefKind::ArmFastInfantryBot,
799            "armnecro" => UnitDefKind::ArmT1RessurectionBot,
800            "armstorm" => UnitDefKind::ArmRocketBot,
801            "armthud" => UnitDefKind::ArmLightPlasmaBot,
802            "armcrash" => UnitDefKind::ArmAmphibiousAntiAirBot,
803            // T1 Bot Constructor
804            "armalab" => UnitDefKind::ArmAdvancedBotLab,
805            // T2 Bot Lab
806            "armack" => UnitDefKind::ArmT2BotConstructor,
807            "armfast" => UnitDefKind::ArmCombatEngineer,
808            "armpyro" => UnitDefKind::ArmFastAssaultBot,
809            "armamph" => UnitDefKind::ArmAmphibiousBot,
810            "armcan" => UnitDefKind::ArmArmoredAssaultBot,
811            "armsumo" => UnitDefKind::ArmHeavilyArmoredAssaultBot,
812            "armtermite" => UnitDefKind::ArmSpiderBot,
813            "armmort" => UnitDefKind::ArmMortarBot,
814            "armhrk" => UnitDefKind::ArmHeavyRocketBot,
815            "armaak" => UnitDefKind::ArmHeavyAntiAir,
816            "armroach" => UnitDefKind::ArmCrawlingBomb,
817            "armsktl" => UnitDefKind::ArmAdvancedCrawlingBomb,
818            "armdecom" => UnitDefKind::ArmDecoyCommander,
819            "armvoyr" => UnitDefKind::ArmRadarBot,
820            "armspy" => UnitDefKind::ArmSpyBot,
821            "armaser" => UnitDefKind::ArmJammerBot,
822            "armmando" => UnitDefKind::ArmStealthBot,
823            // T2 Bot Constructor
824            // T1 Vehicle Plant
825            "armcv" => UnitDefKind::ArmT1VehicleConstructor,
826            "armbeaver" => UnitDefKind::ArmAmphibiousConstructor,
827            "armmlv" => UnitDefKind::ArmMinelayer,
828            "armfav" => UnitDefKind::ArmLightScoutVehicle,
829            "armgator" => UnitDefKind::ArmLightTank,
830            "armgarp" => UnitDefKind::ArmLightAmphibiousTank,
831            "armraid" => UnitDefKind::ArmMediumAssaultTank,
832            "armlevlr" => UnitDefKind::ArmAntiSwarmTank,
833            "armart" => UnitDefKind::ArmLightMobileArtillery,
834            "armmist" => UnitDefKind::ArmMissileTruck,
835            // T1 Minelayer
836            "armmine1" => UnitDefKind::ArmLightMine,
837            "armmine2" | "armmine4" => UnitDefKind::ArmMediumMine,
838            "armmine3" => UnitDefKind::ArmHeavyMine,
839            // T1 Vehicle Constructor
840            "armavp" => UnitDefKind::ArmAdvancedVehiclePlant,
841            // T2 Vehicle Plant
842            "armacv" => UnitDefKind::ArmT2VehicleConstructor,
843            "armseal" => UnitDefKind::ArmMediumAmphibiousTank,
844            "armbull" => UnitDefKind::ArmHeavyAssaultTank,
845            "armcroc" => UnitDefKind::ArmHeavyAmphibiousTank,
846            "armgol" => UnitDefKind::ArmVeryHeavyAssaultTank,
847            "armban" => UnitDefKind::ArmHeavyMissileTank,
848            "armmart" => UnitDefKind::ArmMobileArtilleryTank,
849            "armvroc" => UnitDefKind::ArmStealthyRocketLauncher,
850            "armtrem" => UnitDefKind::ArmHeavyArtilleryTank,
851            "armsent" => UnitDefKind::ArmAntiAirFlakTank,
852            "armmabm" => UnitDefKind::ArmAntiNukeTank,
853            "armter" => UnitDefKind::ArmRadarJammerVehicle,
854            "armvrad" => UnitDefKind::ArmRadarVehicle,
855            // Experimental Gantry
856            "armkorg" => UnitDefKind::ArmMobileHeavyTurretExperimental,
857            "armbanth" => UnitDefKind::ArmAllTerrainAssaultExperimental,
858            "armjugg" => UnitDefKind::ArmAssaultBotExperimental,
859            "armshiva" => UnitDefKind::ArmAmphibiousSiegeExperimental,
860            "armcat" => UnitDefKind::ArmHeavyRocketExperimental,
861            "armsok" => UnitDefKind::ArmHeavyLaserHovertankExperimental,
862            // T1 Hovercraft Platform
863            "armch" => UnitDefKind::ArmT1HovercraftConstructor,
864            "armsh" => UnitDefKind::ArmFastAttackHovertank,
865            "armanac" => UnitDefKind::ArmHovertank,
866            "armah" => UnitDefKind::ArmAntiAirHovertank,
867            "armmh" => UnitDefKind::ArmRocketHovertank,
868            "armhal" => UnitDefKind::ArmAssaultHovertank,
869            // T1 Hovercraft Constructor
870            "armnanotcplat" => UnitDefKind::ArmNavalConstructionTurret,
871            "armamsub" => UnitDefKind::ArmAmphibiousComplex,
872            "armfhlt" => UnitDefKind::ArmFloatingHeavyLaserTower,
873            "armasy" => UnitDefKind::ArmAdvancedShipyard,
874            "armuwgeo" => UnitDefKind::ArmUnderwaterGeothermalPowerplant,
875            // T1 Amphibious Constructor
876            "armptl" => UnitDefKind::ArmPopUpTorpedoLauncher,
877            // T1 Shipyard
878            "armcs" => UnitDefKind::ArmT1ShipConstructor,
879            "armrecl" => UnitDefKind::ArmRessurectionSub,
880            "armsupp" => UnitDefKind::ArmLightGunBoat,
881            "armpt" => UnitDefKind::ArmMissileCorvette,
882            "armpship" => UnitDefKind::ArmAssaultFrigate,
883            "armdecade" => UnitDefKind::ArmAssaultCorvette,
884            "armroy" => UnitDefKind::ArmDestroyer,
885            "armsub" => UnitDefKind::ArmSub,
886            // T1 Ship Constructor
887            // T2 Shipyard
888            "armacsub" => UnitDefKind::ArmT2ShipConstructor,
889            "armmls" => UnitDefKind::ArmNavalEngineer,
890            "armcrus" => UnitDefKind::ArmCruiser,
891            "armshark" => UnitDefKind::ArmFastAssaultSubmarine,
892            "armssub" => UnitDefKind::ArmLongRangeBattleSubmarine,
893            "armaas" => UnitDefKind::ArmAntiAirShip,
894            "armsjam" => UnitDefKind::ArmRadarJammerShip,
895            "armcarry" => UnitDefKind::ArmAircraftCarrier,
896            "armbats" => UnitDefKind::ArmBattleship,
897            "armmship" => UnitDefKind::ArmCruiseMissileShip,
898            "armepoch" => UnitDefKind::ArmFlagship,
899            "armantiship" => UnitDefKind::ArmT2SupportShip,
900            // Naval Engineer
901            "armfmine3" => UnitDefKind::ArmFloatingHeavyMine,
902            // T2 Ship Constructor
903            "armuwfus" => UnitDefKind::ArmUnderwaterFusionReactor,
904            "armuwmmm" => UnitDefKind::ArmUnderwaterEnergyConverter,
905            "armuwmme" => UnitDefKind::ArmUnderwaterMetalConverter,
906            "armgantuw" => UnitDefKind::ArmUnderwaterExperimentalGantry,
907            "armason" => UnitDefKind::ArmAdvancedSonar,
908            "armfatf" => UnitDefKind::ArmNavalAdvancedRadarTargeting,
909            "armatl" => UnitDefKind::ArmAdvancedTorpedoLauncher,
910            "armnaa" => UnitDefKind::ArmNavalAntiAirGun,
911            "armfdoom" => UnitDefKind::ArmFloatingMultiweaponPlatform,
912            // T1 Seaplane Plant
913            "armcsa" => UnitDefKind::ArmSeaplaneConstructor,
914            "armcut" => UnitDefKind::ArmSeaplaneGunship,
915            "armsb" => UnitDefKind::ArmSeaplaneBomber,
916            "armseap" => UnitDefKind::ArmSeaplaneTorpedoGunship,
917            "armsfig" => UnitDefKind::ArmSeaplaneFighter,
918            "armhunt" => UnitDefKind::ArmSeaplaneRadarSonar,
919            // T1 Seaplane Constructor
920            _ => UnitDefKind::Unknown,
921        })
922    }
923}