1use 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 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 CoreT1AirConstructor,
44 CoreT1AirScout,
45 CoreT1Fighter,
46 CoreT1Bomber,
47 CoreLightParalyzerDrone,
48 CoreT1AirTransport,
49 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 CoreT2AirConstructor,
66 CoreRadarSonarAircraft,
67 CoreStealthFighter,
68 CoreGunship,
69 CoreFlyingFortress,
70 CoreStrategicBomber,
71 CoreTorpedoBomber,
72 CoreHeavyTransport,
73 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 CoreT1BotConstructor,
104 CoreT1RessurectionBot,
105 CoreFastInfantryBot,
106 CoreRocketBot,
107 CoreLightPlasmaBot,
108 CoreAmphibiousAntiAirBot,
109 CoreAdvancedBotLab,
111 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 CoreT1VehicleConstructor,
133 CoreAmphibiousConstructor,
134 CoreMinelayer,
135 CoreLightScoutVehicle,
136 CoreLightTank,
137 CoreLightAmphibiousTank,
138 CoreMediumAssaultTank,
139 CoreLightMobileArtillery,
140 CoreMissileTruck,
141 CoreAntiSwarmTank,
142 CoreLightMine,
144 CoreMediumMine,
145 CoreHeavyMine,
146 CoreAdvancedVehiclePlant,
148 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 CoreMobileHeavyTurretExperimental,
164 CoreAllTerrainAssaultExperimental,
165 CoreAssaultBotExperimental,
166 CoreAmphibiousSiegeExperimental,
167 CoreHeavyRocketExperimental,
168 CoreHeavyLaserHovertankExperimental,
169 CoreT1HovercraftConstructor,
171 CoreFastAttackHovertank,
172 CoreHovertank,
173 CoreAssaultHovertank,
174 CoreRocketHovertank,
175 CoreAntiAirHovertank,
176 CoreNavalConstructionTurret,
178 CoreAmphibiousComplex,
179 CoreFloatingHeavyLaserTower,
180 CoreAdvancedShipyard,
181 CoreUnderwaterGeothermalPowerplant,
182 CorePopUpTorpedoLauncher,
184 CoreT1ShipConstructor,
186 CoreRessurectionSub,
187 CoreLightGunBoat,
188 CoreMissileCorvette,
189 CoreAssaultFrigate,
190 CoreDestroyer,
191 CoreSub,
192 CoreT2ShipConstructor,
195 CoreNavalEngineer,
196 CoreCruiser,
197 CoreFastAssaultSubmarine,
198 CoreLongRangeBattleSubmarine,
199 CoreAntiAirShip,
200 CoreRadarJammerShip,
201 CoreAircraftCarrier,
202 CoreBattleship,
203 CoreCruiseMissileShip,
204 CoreFlagship,
205 CoreFloatingHeavyMine,
207 CoreUnderwaterExperimentalGantry,
209 CoreUnderwaterFusionReactor,
210 CoreUnderwaterMetalConverter,
211 CoreUnderwaterEnergyConverter,
212 CoreAdvancedSonar,
213 CoreNavalAdvancedRadarTargeting,
214 CoreAdvancedTorpedoLauncher,
215 CoreNavalAntiAirGun,
216 CoreFloatingMultiweaponPlatform,
217 CoreSeaplaneConstructor,
219 CoreSeaplaneGunship,
220 CoreSeaplaneBomber,
221 CoreSeaplaneTorpedoGunship,
222 CoreSeaplaneFighter,
223 CoreSeaplaneRadarSonar,
224 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 ArmT1AirConstructor,
255 ArmT1AirScout,
256 ArmT1Fighter,
257 ArmT1Bomber,
258 ArmLightParalyzerDrone,
259 ArmT1AirTransport,
260 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 ArmT2AirConstructor,
278 ArmRadarSonarAircraft,
279 ArmStealthFighter,
280 ArmGunship,
281 ArmAtomicBomber,
282 ArmStrategicBomber,
283 ArmTorpedoBomber,
284 ArmHeavyTransport,
285 ArmRapidAssaultGunship,
286 ArmEMPBomber,
287 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 ArmT1BotConstructor,
322 ArmT1RessurectionBot,
323 ArmFastInfantryBot,
324 ArmRocketBot,
325 ArmLightPlasmaBot,
326 ArmAmphibiousAntiAirBot,
327 ArmAdvancedBotLab,
329 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 ArmT1VehicleConstructor,
351 ArmAmphibiousConstructor,
352 ArmMinelayer,
353 ArmLightScoutVehicle,
354 ArmLightTank,
355 ArmLightAmphibiousTank,
356 ArmMediumAssaultTank,
357 ArmLightMobileArtillery,
358 ArmMissileTruck,
359 ArmAntiSwarmTank,
360 ArmLightMine,
362 ArmMediumMine,
363 ArmHeavyMine,
364 ArmAdvancedVehiclePlant,
366 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 ArmMobileHeavyTurretExperimental,
383 ArmAllTerrainAssaultExperimental,
384 ArmAssaultBotExperimental,
385 ArmAmphibiousSiegeExperimental,
386 ArmHeavyRocketExperimental,
387 ArmHeavyLaserHovertankExperimental,
388 ArmT1HovercraftConstructor,
390 ArmFastAttackHovertank,
391 ArmHovertank,
392 ArmAssaultHovertank,
393 ArmRocketHovertank,
394 ArmAntiAirHovertank,
395 ArmNavalConstructionTurret,
397 ArmAmphibiousComplex,
398 ArmFloatingHeavyLaserTower,
399 ArmAdvancedShipyard,
400 ArmUnderwaterGeothermalPowerplant,
401 ArmPopUpTorpedoLauncher,
403 ArmT1ShipConstructor,
405 ArmRessurectionSub,
406 ArmLightGunBoat,
407 ArmMissileCorvette,
408 ArmAssaultFrigate,
409 ArmAssaultCorvette,
410 ArmDestroyer,
411 ArmSub,
412 ArmT2ShipConstructor,
415 ArmNavalEngineer,
416 ArmCruiser,
417 ArmFastAssaultSubmarine,
418 ArmLongRangeBattleSubmarine,
419 ArmAntiAirShip,
420 ArmRadarJammerShip,
421 ArmAircraftCarrier,
422 ArmBattleship,
423 ArmCruiseMissileShip,
424 ArmFlagship,
425 ArmT2SupportShip,
426 ArmFloatingHeavyMine,
428 ArmUnderwaterExperimentalGantry,
430 ArmUnderwaterFusionReactor,
431 ArmUnderwaterMetalConverter,
432 ArmUnderwaterEnergyConverter,
433 ArmAdvancedSonar,
434 ArmNavalAdvancedRadarTargeting,
435 ArmAdvancedTorpedoLauncher,
436 ArmNavalAntiAirGun,
437 ArmFloatingMultiweaponPlatform,
438 ArmSeaplaneConstructor,
440 ArmSeaplaneGunship,
441 ArmSeaplaneBomber,
442 ArmSeaplaneTorpedoGunship,
443 ArmSeaplaneFighter,
444 ArmSeaplaneRadarSonar,
445 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 "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 "corca" => UnitDefKind::CoreT1AirConstructor,
516 "corfink" => UnitDefKind::CoreT1AirScout,
517 "corveng" => UnitDefKind::CoreT1Fighter,
518 "corshad" => UnitDefKind::CoreT1Bomber,
519 "corvalk" => UnitDefKind::CoreLightParalyzerDrone,
520 "corbw" => UnitDefKind::CoreT1AirTransport,
521 "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 "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 "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 "corck" => UnitDefKind::CoreT1BotConstructor,
576 "corak" => UnitDefKind::CoreFastInfantryBot,
577 "cornecro" => UnitDefKind::CoreT1RessurectionBot,
578 "corstorm" => UnitDefKind::CoreRocketBot,
579 "corthud" => UnitDefKind::CoreLightPlasmaBot,
580 "corcrash" => UnitDefKind::CoreAmphibiousAntiAirBot,
581 "coralab" => UnitDefKind::CoreAdvancedBotLab,
583 "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 "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 "cormine1" => UnitDefKind::CoreLightMine,
615 "cormine2" | "cormine4" => UnitDefKind::CoreMediumMine,
616 "cormine3" => UnitDefKind::CoreHeavyMine,
617 "coravp" => UnitDefKind::CoreAdvancedVehiclePlant,
619 "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 "corkorg" => UnitDefKind::CoreMobileHeavyTurretExperimental,
635 "corkarg" => UnitDefKind::CoreAllTerrainAssaultExperimental,
636 "corjugg" => UnitDefKind::CoreAssaultBotExperimental,
637 "corshiva" => UnitDefKind::CoreAmphibiousSiegeExperimental,
638 "corcat" => UnitDefKind::CoreHeavyRocketExperimental,
639 "corsok" => UnitDefKind::CoreHeavyLaserHovertankExperimental,
640 "corch" => UnitDefKind::CoreT1HovercraftConstructor,
642 "corsh" => UnitDefKind::CoreFastAttackHovertank,
643 "corsnap" => UnitDefKind::CoreHovertank,
644 "corah" => UnitDefKind::CoreAntiAirHovertank,
645 "cormh" => UnitDefKind::CoreRocketHovertank,
646 "corhal" => UnitDefKind::CoreAssaultHovertank,
647 "cornanotcplat" => UnitDefKind::CoreNavalConstructionTurret,
649 "coramsub" => UnitDefKind::CoreAmphibiousComplex,
650 "corfhlt" => UnitDefKind::CoreFloatingHeavyLaserTower,
651 "corasy" => UnitDefKind::CoreAdvancedShipyard,
652 "coruwgeo" => UnitDefKind::CoreUnderwaterGeothermalPowerplant,
653 "corptl" => UnitDefKind::CorePopUpTorpedoLauncher,
655 "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 "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 "corfmine3" => UnitDefKind::CoreFloatingHeavyMine,
678 "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 "corcsa" => UnitDefKind::CoreSeaplaneConstructor,
690 "corcut" => UnitDefKind::CoreSeaplaneGunship,
691 "corsb" => UnitDefKind::CoreSeaplaneBomber,
692 "corseap" => UnitDefKind::CoreSeaplaneTorpedoGunship,
693 "corsfig" => UnitDefKind::CoreSeaplaneFighter,
694 "corhunt" => UnitDefKind::CoreSeaplaneRadarSonar,
695 "armcom" => UnitDefKind::ArmCommander,
697 "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 "armca" => UnitDefKind::ArmT1AirConstructor,
725 "armpeep" => UnitDefKind::ArmT1AirScout,
726 "armfig" => UnitDefKind::ArmT1Fighter,
727 "armthund" => UnitDefKind::ArmT1Bomber,
728 "armkam" => UnitDefKind::ArmLightParalyzerDrone,
729 "armatlas" => UnitDefKind::ArmT1AirTransport,
730 "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 "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 "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 "armck" => UnitDefKind::ArmT1BotConstructor,
798 "armak" => UnitDefKind::ArmFastInfantryBot,
799 "armnecro" => UnitDefKind::ArmT1RessurectionBot,
800 "armstorm" => UnitDefKind::ArmRocketBot,
801 "armthud" => UnitDefKind::ArmLightPlasmaBot,
802 "armcrash" => UnitDefKind::ArmAmphibiousAntiAirBot,
803 "armalab" => UnitDefKind::ArmAdvancedBotLab,
805 "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 "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 "armmine1" => UnitDefKind::ArmLightMine,
837 "armmine2" | "armmine4" => UnitDefKind::ArmMediumMine,
838 "armmine3" => UnitDefKind::ArmHeavyMine,
839 "armavp" => UnitDefKind::ArmAdvancedVehiclePlant,
841 "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 "armkorg" => UnitDefKind::ArmMobileHeavyTurretExperimental,
857 "armbanth" => UnitDefKind::ArmAllTerrainAssaultExperimental,
858 "armjugg" => UnitDefKind::ArmAssaultBotExperimental,
859 "armshiva" => UnitDefKind::ArmAmphibiousSiegeExperimental,
860 "armcat" => UnitDefKind::ArmHeavyRocketExperimental,
861 "armsok" => UnitDefKind::ArmHeavyLaserHovertankExperimental,
862 "armch" => UnitDefKind::ArmT1HovercraftConstructor,
864 "armsh" => UnitDefKind::ArmFastAttackHovertank,
865 "armanac" => UnitDefKind::ArmHovertank,
866 "armah" => UnitDefKind::ArmAntiAirHovertank,
867 "armmh" => UnitDefKind::ArmRocketHovertank,
868 "armhal" => UnitDefKind::ArmAssaultHovertank,
869 "armnanotcplat" => UnitDefKind::ArmNavalConstructionTurret,
871 "armamsub" => UnitDefKind::ArmAmphibiousComplex,
872 "armfhlt" => UnitDefKind::ArmFloatingHeavyLaserTower,
873 "armasy" => UnitDefKind::ArmAdvancedShipyard,
874 "armuwgeo" => UnitDefKind::ArmUnderwaterGeothermalPowerplant,
875 "armptl" => UnitDefKind::ArmPopUpTorpedoLauncher,
877 "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 "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 "armfmine3" => UnitDefKind::ArmFloatingHeavyMine,
902 "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 "armcsa" => UnitDefKind::ArmSeaplaneConstructor,
914 "armcut" => UnitDefKind::ArmSeaplaneGunship,
915 "armsb" => UnitDefKind::ArmSeaplaneBomber,
916 "armseap" => UnitDefKind::ArmSeaplaneTorpedoGunship,
917 "armsfig" => UnitDefKind::ArmSeaplaneFighter,
918 "armhunt" => UnitDefKind::ArmSeaplaneRadarSonar,
919 _ => UnitDefKind::Unknown,
921 })
922 }
923}