Files
dcs_liberation/game/data/groundunitclass.py
2021-06-17 22:41:14 +02:00

240 lines
6.1 KiB
Python

from enum import unique, Enum
from typing import Type
from dcs.vehicles import AirDefence, Infantry, Unarmed, Artillery, Armor
from dcs.unittype import VehicleType
from pydcs_extensions.frenchpack import frenchpack
@unique
class GroundUnitClass(Enum):
Tank = (
"Tank",
(
Armor.T_55,
Armor.T_72B,
Armor.T_72B3,
Armor.T_80UD,
Armor.T_90,
Armor.Leopard_2A4,
Armor.Leopard_2A4_trs,
Armor.Leopard_2A5,
Armor.Leopard_2,
Armor.Leopard1A3,
Armor.Leclerc,
Armor.Challenger2,
Armor.Chieftain_mk3,
Armor.M_1_Abrams,
Armor.M_60,
Armor.Merkava_Mk4,
Armor.ZTZ96B,
# WW2
# Axis
Armor.Pz_IV_H,
Armor.SturmPzIV,
Armor.Pz_V_Panther_G,
Armor.Tiger_I,
Armor.Tiger_II_H,
# Allies
Armor.M4_Sherman,
Armor.Centaur_IV,
Armor.Cromwell_IV,
Armor.Churchill_VII,
# Mods
frenchpack.DIM__TOYOTA_BLUE,
frenchpack.DIM__TOYOTA_GREEN,
frenchpack.DIM__TOYOTA_DESERT,
frenchpack.DIM__KAMIKAZE,
frenchpack.AMX_30B2,
frenchpack.Leclerc_Serie_XXI,
),
)
Atgm = (
"ATGM",
(
Armor.M1043_HMMWV_Armament,
Armor.VAB_Mephisto,
Armor.M1134_Stryker_ATGM,
Armor.BMP_2,
# WW2 (Tank Destroyers)
# Axxis
Armor.Stug_III,
Armor.Stug_IV,
Armor.JagdPz_IV,
Armor.Jagdpanther_G1,
Armor.Elefant_SdKfz_184,
# Allies
Armor.M10_GMC,
Armor.M4A4_Sherman_FF,
# Mods
frenchpack.VBAE_CRAB_MMP,
frenchpack.VAB_MEPHISTO,
frenchpack.TRM_2000_PAMELA,
),
)
Ifv = (
"IFV",
(
Armor.BMP_3,
Armor.BMP_2,
Armor.BMP_1,
Armor.Marder,
Armor.MCV_80,
Armor.M1128_Stryker_MGS,
Armor.M_2_Bradley,
Armor.BMD_1,
Armor.ZBD04A,
# Mods
frenchpack.VBAE_CRAB,
frenchpack.VAB_T20_13,
),
)
Apc = (
"APC",
(
Armor.M1126_Stryker_ICV,
Armor.M_113,
Armor.BTR_80,
Armor.BTR_82A,
Armor.MTLB,
Armor.AAV7,
Armor.TPZ,
Armor.BTR_D,
# WW2
Armor.M2A1_halftrack,
Armor.Sd_Kfz_251,
# Mods
frenchpack.VAB__50,
frenchpack.VBL__50,
frenchpack.VBL_AANF1,
),
)
Artillery = (
"Artillery",
(
Artillery.Grad_FDDM,
Artillery.Smerch_HE,
Artillery.SAU_Gvozdika,
Artillery.SAU_Akatsia,
Artillery.Grad_URAL,
Artillery.Uragan_BM_27,
Artillery.M_109,
Artillery.MLRS,
Artillery.SAU_2_C9,
Artillery.SpGH_Dana,
Artillery.T155_Firtina,
Artillery.PLZ05,
Artillery.SAU_Msta,
Artillery.Smerch,
# WW2
Artillery.M12_GMC,
),
)
Logistics = (
"Logistics",
(
Unarmed.M30_CC,
Unarmed.M_818,
Unarmed.KAMAZ_Truck,
Unarmed.Ural_375,
Unarmed.GAZ_66,
Unarmed.GAZ_3307,
Unarmed.GAZ_3308,
Unarmed.Ural_4320_31,
Unarmed.Ural_4320T,
Unarmed.Blitz_36_6700A,
Unarmed.Kubelwagen_82,
Unarmed.Sd_Kfz_7,
Unarmed.Sd_Kfz_2,
Unarmed.Willys_MB,
Unarmed.Land_Rover_109_S3,
Unarmed.Land_Rover_101_FC,
# Mods
frenchpack.VBL,
frenchpack.VAB,
),
)
Recon = (
"Recon",
(
Armor.M1043_HMMWV_Armament,
Armor.Cobra,
Armor.PT_76,
Armor.LAV_25,
Armor.BRDM_2,
# WW2
Armor.Tetrarch,
Armor.Sd_Kfz_234_2_Puma,
Armor.M8_Greyhound,
Armor.Daimler_AC,
# Mods
frenchpack.ERC_90,
frenchpack.AMX_10RCR,
frenchpack.AMX_10RCR_SEPAR,
),
)
Infantry = (
"Infantry",
(
Infantry.Infantry_AK_Ins,
Infantry.Soldier_AK,
Infantry.Soldier_wwii_us,
Infantry.Soldier_mauser98,
Infantry.Soldier_wwii_br_01,
Infantry.Soldier_M4_GRG,
Infantry.Infantry_AK,
Infantry.Paratrooper_AKS_74,
Infantry.Paratrooper_RPG_16,
Infantry.Soldier_M249,
Infantry.Soldier_M4,
Infantry.Soldier_RPG,
),
)
Shorads = (
"SHORADS",
(
AirDefence.Ural_375_ZU_23,
AirDefence.Ural_375_ZU_23_Insurgent,
AirDefence.ZSU_57_2,
AirDefence.ZSU_23_4_Shilka,
AirDefence.Osa_9A33_ln,
AirDefence.Strela_1_9P31,
AirDefence.Strela_10M3,
AirDefence.Tor_9A331,
AirDefence._2S6_Tunguska,
AirDefence.Gepard,
AirDefence.Vulcan,
AirDefence.M6_Linebacker,
AirDefence.M48_Chaparral,
AirDefence.M1097_Avenger,
AirDefence.Roland_ADS,
AirDefence.HQ_7_LN_SP,
AirDefence.Flak18,
AirDefence.Flak36,
AirDefence.Flak37,
AirDefence.Flak41,
AirDefence.Bofors40,
AirDefence.S_60_Type59_Artillery,
AirDefence.M1_37mm,
AirDefence.QF_37_AA,
),
)
def __init__(
self, class_name: str, unit_list: tuple[Type[VehicleType], ...]
) -> None:
self.class_name = class_name
self.unit_list = unit_list
def __contains__(self, unit_type: Type[VehicleType]) -> bool:
return unit_type in self.unit_list