import dcs import aircraftMods from MissionGenerator import logger, directories client_helos = [ dcs.helicopters.UH_1H, #aircraftMods.UH_60L, dcs.helicopters.AH_64D_BLK_II, dcs.helicopters.Mi_24P, dcs.helicopters.Ka_50, dcs.helicopters.Ka_50_3 ] player_helos = [ dcs.helicopters.AH_64D_BLK_II, dcs.helicopters.Ka_50, dcs.helicopters.Ka_50_3, dcs.helicopters.Mi_8MT, dcs.helicopters.Mi_24P, dcs.helicopters.SA342M, dcs.helicopters.SA342L, dcs.helicopters.SA342Minigun, dcs.helicopters.SA342Mistral, dcs.helicopters.UH_1H, aircraftMods.UH_60L, dcs.planes.AV8BNA, dcs.planes.L_39ZA, dcs.planes.MB_339A ] e_attack_helos = [ dcs.helicopters.Mi_24P, dcs.helicopters.Ka_50, dcs.helicopters.Mi_28N, ] e_transport_helos = [ #dcs.helicopters.Mi_26, #dcs.helicopters.Mi_24P, #dcs.helicopters.Mi_8MT, dcs.helicopters.CH_47D, ] e_attack_planes = [ dcs.planes.A_10C, ] e_fighter_planes = [ dcs.planes.Su_27, ] f_fighter_planes = [ dcs.planes.FA_18C_hornet, ] e_zone_sams = [ dcs.vehicles.AirDefence.Strela_10M3, ] #flaming cliffs aircraft excluded_player_aircraft = [ dcs.planes.F_15C.id, dcs.planes.Su_27.id, dcs.planes.Su_33.id, dcs.planes.MiG_29A.id, dcs.planes.MiG_29S.id, dcs.planes.Su_25T.id, dcs.planes.Su_25TM.id, dcs.planes.L_39C.id, dcs.planes.A_10C.id, dcs.planes.A_10A.id, dcs.planes.MB_339APAN.id, dcs.planes.Bf_109K_4.id, dcs.planes.C_101CC.id, dcs.planes.C_101EB.id, dcs.planes.Christen_Eagle_II.id, dcs.planes.F_86F_Sabre.id, dcs.planes.FW_190A8.id, dcs.planes.FW_190D9.id, dcs.planes.Hawk.id, dcs.planes.I_16.id, dcs.planes.J_11A.id, dcs.planes.MosquitoFBMkVI.id, dcs.planes.P_47D_30.id, dcs.planes.P_47D_40.id, dcs.planes.P_47D_30bl1.id, dcs.planes.P_51D.id, dcs.planes.P_51D_30_NA.id, dcs.planes.SpitfireLFMkIX.id, dcs.planes.SpitfireLFMkIXCW.id, dcs.planes.TF_51D.id, dcs.planes.Yak_52.id, dcs.planes.MiG_15bis.id, dcs.planes.MiG_19P.id, dcs.planes.Su_25.id ] def getUnitsFromMiz(file, side='both'): forces = {} vehicles = [] attack_helos = [] transport_helos = [] attack_planes = [] fighter_planes = [] helicopters = [] planes = [] source_mission = dcs.mission.Mission() try: source_mission.load_file(file) if side == 'both': sides = ['red', 'blue'] else: sides = [side] for side in sides: for country_name in source_mission.coalition.get(side).countries: country_obj = source_mission.coalition.get(side).countries[country_name] for vehicle_group in country_obj.vehicle_group: vehicles.append(vehicle_group) for helicopter_group in country_obj.helicopter_group: helicopters.append(helicopter_group) if helicopter_group.task == 'CAS': attack_helos.append(helicopter_group) elif helicopter_group.task == 'Transport': transport_helos.append(helicopter_group) for plane_group in country_obj.plane_group: planes.append(plane_group) if plane_group.task == 'CAS': attack_planes.append(plane_group) elif plane_group.task == 'CAP': fighter_planes.append(plane_group) forces["vehicles"] = vehicles forces["attack_helos"] = attack_helos forces["transport_helos"] = transport_helos forces["attack_planes"] = attack_planes forces["fighter_planes"] = fighter_planes forces["helicopters"] = helicopters forces["aircraft"] = planes + helicopters return forces except: logger.error("Failed to load units from " + file) def getDefaultLoadouts(): print("Getting default loadouts") default_loadouts = {} groups = getUnitsFromMiz(directories.home_dir + "\\config\\blue_player_loadouts.miz", "blue") for group in groups["aircraft"]: default_loadouts[group.units[0].unit_type.id] = {} default_loadouts[group.units[0].unit_type.id]["pylons"] = group.units[0].pylons default_loadouts[group.units[0].unit_type.id]["livery_id"] = group.units[0].livery_id default_loadouts[group.units[0].unit_type.id]["group_frequency"] = group.frequency if hasattr(group.units[0], "radio"): default_loadouts[group.units[0].unit_type.id]["radio"] = group.units[0].radio else: logger.warn("No radios found in loadout for " + group.units[0].unit_type.id + ". Is it set as a client aircraft?") default_loadouts[group.units[0].unit_type.id]["gun"] = group.units[0].gun default_loadouts[group.units[0].unit_type.id]["hardpoint_racks"] = group.units[0].hardpoint_racks return default_loadouts def applyLoadoutsToGroup(group, loadouts): for unit in group.units: if unit.unit_type.id not in loadouts: logger.warn("No loadout found for " + unit.unit_type.id) continue loadout = loadouts[unit.unit_type.id] unit.pylons = loadout.get("pylons", unit.pylons) unit.livery_id = loadout.get("livery_id", unit.livery_id) group.frequency = loadout.get("group_frequency", group.frequency) if hasattr(unit, "radio"): unit.radio = loadout.get("radio", unit.radio) else: logger.warn("No radios to apply for " + unit.unit_type.id) unit.gun = loadout.get("gun", unit.gun) unit.hardpoint_racks = loadout.get("hardpoint_racks", unit.hardpoint_racks) return group