mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Unit composition is defined by the doctrine. The most understaffed CP will now get the most underrepresented unit type. Previously a random understaffed CP would get a random unit type. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1057.
230 lines
6.9 KiB
Python
230 lines
6.9 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.MBT_T_55,
|
|
Armor.MBT_T_72B,
|
|
Armor.MBT_T_72B3,
|
|
Armor.MBT_T_80U,
|
|
Armor.MBT_T_90,
|
|
Armor.MBT_Leopard_2A4,
|
|
Armor.MBT_Leopard_2A4_Trs,
|
|
Armor.MBT_Leopard_2A5,
|
|
Armor.MBT_Leopard_2A6M,
|
|
Armor.MBT_Leopard_1A3,
|
|
Armor.MBT_Leclerc,
|
|
Armor.MBT_Challenger_II,
|
|
Armor.MBT_Chieftain_Mk_3,
|
|
Armor.MBT_M1A2_Abrams,
|
|
Armor.MBT_M60A3_Patton,
|
|
Armor.MBT_Merkava_IV,
|
|
Armor.ZTZ_96B,
|
|
Armor.LT_PT_76,
|
|
# WW2
|
|
Armor.MT_Pz_Kpfw_V_Panther_Ausf_G,
|
|
Armor.Tk_PzIV_H,
|
|
Armor.HT_Pz_Kpfw_VI_Tiger_I,
|
|
Armor.HT_Pz_Kpfw_VI_Ausf__B_Tiger_II,
|
|
Armor.Tk_M4_Sherman,
|
|
Armor.MT_M4A4_Sherman_Firefly,
|
|
Armor.SPG_StuG_IV,
|
|
Armor.CT_Centaur_IV,
|
|
Armor.CT_Cromwell_IV,
|
|
Armor.HIT_Churchill_VII,
|
|
Armor.LT_Mk_VII_Tetrarch,
|
|
Armor.SPG_Sturmpanzer_IV_Brummbar,
|
|
# Mods
|
|
frenchpack.DIM__TOYOTA_BLUE,
|
|
frenchpack.DIM__TOYOTA_GREEN,
|
|
frenchpack.DIM__TOYOTA_DESERT,
|
|
frenchpack.DIM__KAMIKAZE,
|
|
frenchpack.AMX_10RCR,
|
|
frenchpack.AMX_10RCR_SEPAR,
|
|
frenchpack.AMX_30B2,
|
|
frenchpack.Leclerc_Serie_XXI,
|
|
),
|
|
)
|
|
|
|
Atgm = (
|
|
"ATGM",
|
|
(
|
|
Armor.ATGM_HMMWV,
|
|
Armor.ATGM_VAB_Mephisto,
|
|
Armor.ATGM_Stryker,
|
|
Armor.IFV_BMP_2,
|
|
# WW2 (Tank Destroyers)
|
|
Unarmed.Carrier_M30_Cargo,
|
|
Armor.SPG_Jagdpanzer_IV,
|
|
Armor.SPG_Jagdpanther_G1,
|
|
Armor.SPG_M10_GMC,
|
|
# Mods
|
|
frenchpack.VBAE_CRAB_MMP,
|
|
frenchpack.VAB_MEPHISTO,
|
|
frenchpack.TRM_2000_PAMELA,
|
|
),
|
|
)
|
|
|
|
Ifv = (
|
|
"IFV",
|
|
(
|
|
Armor.IFV_BMP_3,
|
|
Armor.IFV_BMP_2,
|
|
Armor.IFV_BMP_1,
|
|
Armor.IFV_Marder,
|
|
Armor.IFV_Warrior,
|
|
Armor.IFV_LAV_25,
|
|
Armor.SPG_Stryker_MGS,
|
|
Armor.IFV_Sd_Kfz_234_2_Puma,
|
|
Armor.IFV_M2A2_Bradley,
|
|
Armor.IFV_BMD_1,
|
|
Armor.ZBD_04A,
|
|
# WW2
|
|
Armor.IFV_Sd_Kfz_234_2_Puma,
|
|
Armor.Car_M8_Greyhound_Armored,
|
|
Armor.Car_Daimler_Armored,
|
|
# Mods
|
|
frenchpack.ERC_90,
|
|
frenchpack.VBAE_CRAB,
|
|
frenchpack.VAB_T20_13,
|
|
),
|
|
)
|
|
|
|
Apc = (
|
|
"APC",
|
|
(
|
|
Armor.Scout_HMMWV,
|
|
Armor.IFV_M1126_Stryker_ICV,
|
|
Armor.APC_M113,
|
|
Armor.APC_BTR_80,
|
|
Armor.IFV_BTR_82A,
|
|
Armor.APC_MTLB,
|
|
Armor.APC_M2A1_Halftrack,
|
|
Armor.Scout_Cobra,
|
|
Armor.APC_Sd_Kfz_251_Halftrack,
|
|
Armor.APC_AAV_7_Amphibious,
|
|
Armor.APC_TPz_Fuchs,
|
|
Armor.Scout_BRDM_2,
|
|
Armor.APC_BTR_RD,
|
|
Artillery.Grad_MRL_FDDM__FC,
|
|
# WW2
|
|
Armor.APC_M2A1_Halftrack,
|
|
Armor.APC_Sd_Kfz_251_Halftrack,
|
|
# Mods
|
|
frenchpack.VAB__50,
|
|
frenchpack.VBL__50,
|
|
frenchpack.VBL_AANF1,
|
|
),
|
|
)
|
|
|
|
Artillery = (
|
|
"Artillery",
|
|
(
|
|
Artillery.MLRS_9A52_Smerch_HE_300mm,
|
|
Artillery.SPH_2S1_Gvozdika_122mm,
|
|
Artillery.SPH_2S3_Akatsia_152mm,
|
|
Artillery.MLRS_BM_21_Grad_122mm,
|
|
Artillery.MLRS_9K57_Uragan_BM_27_220mm,
|
|
Artillery.SPH_M109_Paladin_155mm,
|
|
Artillery.MLRS_M270_227mm,
|
|
Artillery.SPM_2S9_Nona_120mm_M,
|
|
Artillery.SPH_Dana_vz77_152mm,
|
|
Artillery.SPH_T155_Firtina_155mm,
|
|
Artillery.PLZ_05,
|
|
Artillery.SPH_2S19_Msta_152mm,
|
|
Artillery.MLRS_9A52_Smerch_CM_300mm,
|
|
# WW2
|
|
Artillery.SPG_M12_GMC_155mm,
|
|
),
|
|
)
|
|
|
|
Logistics = (
|
|
"Logistics",
|
|
(
|
|
Unarmed.Truck_M818_6x6,
|
|
Unarmed.Truck_KAMAZ_43101,
|
|
Unarmed.Truck_Ural_375,
|
|
Unarmed.Truck_GAZ_66,
|
|
Unarmed.Truck_GAZ_3307,
|
|
Unarmed.Truck_GAZ_3308,
|
|
Unarmed.Truck_Ural_4320_31_Arm_d,
|
|
Unarmed.Truck_Ural_4320T,
|
|
Unarmed.Truck_Opel_Blitz,
|
|
Unarmed.LUV_Kubelwagen_82,
|
|
Unarmed.Carrier_Sd_Kfz_7_Tractor,
|
|
Unarmed.LUV_Kettenrad,
|
|
Unarmed.Car_Willys_Jeep,
|
|
Unarmed.LUV_Land_Rover_109,
|
|
Unarmed.Truck_Land_Rover_101_FC,
|
|
# Mods
|
|
frenchpack.VBL,
|
|
frenchpack.VAB,
|
|
),
|
|
)
|
|
|
|
Infantry = (
|
|
"Infantry",
|
|
(
|
|
Infantry.Insurgent_AK_74,
|
|
Infantry.Infantry_AK_74,
|
|
Infantry.Infantry_M1_Garand,
|
|
Infantry.Infantry_Mauser_98,
|
|
Infantry.Infantry_SMLE_No_4_Mk_1,
|
|
Infantry.Infantry_M4_Georgia,
|
|
Infantry.Infantry_AK_74_Rus,
|
|
Infantry.Paratrooper_AKS,
|
|
Infantry.Paratrooper_RPG_16,
|
|
Infantry.Infantry_M249,
|
|
Infantry.Infantry_M4,
|
|
Infantry.Infantry_RPG,
|
|
),
|
|
)
|
|
|
|
Shorads = (
|
|
"SHORADS",
|
|
(
|
|
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375,
|
|
AirDefence.SPAAA_ZU_23_2_Insurgent_Mounted_Ural_375,
|
|
AirDefence.SPAAA_ZSU_57_2,
|
|
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish,
|
|
AirDefence.SAM_SA_8_Osa_Gecko_TEL,
|
|
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL,
|
|
AirDefence.SAM_SA_13_Strela_10M3_Gopher_TEL,
|
|
AirDefence.SAM_SA_15_Tor_Gauntlet,
|
|
AirDefence.SAM_SA_19_Tunguska_Grison,
|
|
AirDefence.SPAAA_Gepard,
|
|
AirDefence.SPAAA_Vulcan_M163,
|
|
AirDefence.SAM_Linebacker___Bradley_M6,
|
|
AirDefence.SAM_Chaparral_M48,
|
|
AirDefence.SAM_Avenger__Stinger,
|
|
AirDefence.SAM_Roland_ADS,
|
|
AirDefence.HQ_7_Self_Propelled_LN,
|
|
AirDefence.AAA_8_8cm_Flak_18,
|
|
AirDefence.AAA_8_8cm_Flak_36,
|
|
AirDefence.AAA_8_8cm_Flak_37,
|
|
AirDefence.AAA_8_8cm_Flak_41,
|
|
AirDefence.AAA_Bofors_40mm,
|
|
AirDefence.AAA_S_60_57mm,
|
|
AirDefence.AAA_M1_37mm,
|
|
AirDefence.AAA_QF_3_7,
|
|
),
|
|
)
|
|
|
|
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
|