From 956f648f960281c518c44d2fba2b5902d7376d0d Mon Sep 17 00:00:00 2001 From: zhexu14 <64713351+zhexu14@users.noreply.github.com> Date: Mon, 30 Sep 2024 18:22:25 +1000 Subject: [PATCH] Add use_western_callsign parameter to Country class (#390) * Export data on whether a country uses western callsigns or not. Preserve callsign data for backwards compatibility --- dcs/countries.py | 91 ++++++++++++++++++++++++++++++++++++++++++ dcs/country.py | 1 + dcs/mission.py | 10 ++++- tools/pydcs_export.lua | 15 +++++++ 4 files changed, 116 insertions(+), 1 deletion(-) diff --git a/dcs/countries.py b/dcs/countries.py index 180c084d..317fb96e 100644 --- a/dcs/countries.py +++ b/dcs/countries.py @@ -519,6 +519,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Russia, self).__init__( @@ -935,6 +936,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Ukraine, self).__init__( @@ -1440,6 +1442,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(USA, self).__init__( @@ -1827,6 +1830,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Turkey, self).__init__( @@ -2228,6 +2232,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(UK, self).__init__( @@ -2618,6 +2623,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(France, self).__init__( @@ -3088,6 +3094,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Germany, self).__init__( @@ -3911,6 +3918,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(USAFAggressors, self).__init__( @@ -4286,6 +4294,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Canada, self).__init__( @@ -4668,6 +4677,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Spain, self).__init__( @@ -5077,6 +5087,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(TheNetherlands, self).__init__( @@ -5455,6 +5466,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Belgium, self).__init__( @@ -5816,6 +5828,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Norway, self).__init__( @@ -6175,6 +6188,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Denmark, self).__init__( @@ -6565,6 +6579,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Israel, self).__init__( @@ -6989,6 +7004,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Georgia, self).__init__( @@ -7276,6 +7292,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Insurgents, self).__init__( @@ -7587,6 +7604,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Abkhazia, self).__init__( @@ -7875,6 +7893,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(SouthOssetia, self).__init__( @@ -8250,6 +8269,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Italy, self).__init__( @@ -8632,6 +8652,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Australia, self).__init__( @@ -8965,6 +8986,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Switzerland, self).__init__( @@ -9293,6 +9315,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Austria, self).__init__( @@ -9652,6 +9675,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Belarus, self).__init__( @@ -10083,6 +10107,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Bulgaria, self).__init__( @@ -10471,6 +10496,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(CzechRepublic, self).__init__( @@ -10782,6 +10808,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(China, self).__init__( @@ -11118,6 +11145,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Croatia, self).__init__( @@ -11548,6 +11576,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Egypt, self).__init__( @@ -11949,6 +11978,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Finland, self).__init__( @@ -12349,6 +12379,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Greece, self).__init__( @@ -12764,6 +12795,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Hungary, self).__init__( @@ -13150,6 +13182,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(India, self).__init__( @@ -13571,6 +13604,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Iran, self).__init__( @@ -13969,6 +14003,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Iraq, self).__init__( @@ -14360,6 +14395,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Japan, self).__init__( @@ -14813,6 +14849,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Kazakhstan, self).__init__( @@ -15167,6 +15204,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(NorthKorea, self).__init__( @@ -15534,6 +15572,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Pakistan, self).__init__( @@ -15952,6 +15991,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Poland, self).__init__( @@ -16363,6 +16403,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Romania, self).__init__( @@ -16742,6 +16783,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(SaudiArabia, self).__init__( @@ -17123,6 +17165,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Serbia, self).__init__( @@ -17492,6 +17535,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Slovakia, self).__init__( @@ -17857,6 +17901,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(SouthKorea, self).__init__( @@ -18193,6 +18238,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Sweden, self).__init__( @@ -18597,6 +18643,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Syria, self).__init__( @@ -18965,6 +19012,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Yemen, self).__init__( @@ -19345,6 +19393,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Vietnam, self).__init__( @@ -19705,6 +19754,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Venezuela, self).__init__( @@ -20029,6 +20079,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Tunisia, self).__init__( @@ -20378,6 +20429,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Thailand, self).__init__( @@ -20728,6 +20780,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Sudan, self).__init__( @@ -21049,6 +21102,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Philippines, self).__init__( @@ -21412,6 +21466,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Morocco, self).__init__( @@ -21748,6 +21803,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Mexico, self).__init__( @@ -22086,6 +22142,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Malaysia, self).__init__( @@ -22452,6 +22509,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Libya, self).__init__( @@ -22814,6 +22872,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Jordan, self).__init__( @@ -23197,6 +23256,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Indonesia, self).__init__( @@ -23521,6 +23581,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Honduras, self).__init__( @@ -23875,6 +23936,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Ethiopia, self).__init__( @@ -24236,6 +24298,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Chile, self).__init__( @@ -24589,6 +24652,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Brazil, self).__init__( @@ -24934,6 +24998,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Bahrain, self).__init__( @@ -25285,6 +25350,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(ThirdReich, self).__init__( @@ -25567,6 +25633,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(Yugoslavia, self).__init__( @@ -25993,6 +26060,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.B01 ], } + use_western_callsigns = False def __init__(self): super(USSR, self).__init__( @@ -26342,6 +26410,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(ItalianSocialRepublic, self).__init__( @@ -26808,6 +26877,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Algeria, self).__init__( @@ -27162,6 +27232,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Kuwait, self).__init__( @@ -27504,6 +27575,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Qatar, self).__init__( @@ -27867,6 +27939,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Oman, self).__init__( @@ -28240,6 +28313,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(UnitedArabEmirates, self).__init__( @@ -28573,6 +28647,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(SouthAfrica, self).__init__( @@ -28977,6 +29052,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Cuba, self).__init__( @@ -29320,6 +29396,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Portugal, self).__init__( @@ -29700,6 +29777,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = False def __init__(self): super(GDR, self).__init__( @@ -30056,6 +30134,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Lebanon, self).__init__( @@ -30879,6 +30958,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(CombinedJointTaskForcesBlue, self).__init__( @@ -31702,6 +31782,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(CombinedJointTaskForcesRed, self).__init__( @@ -32525,6 +32606,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(UnitedNationsPeacekeepers, self).__init__( @@ -32865,6 +32947,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Argentina, self).__init__( @@ -33214,6 +33297,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Cyprus, self).__init__( @@ -33560,6 +33644,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Slovenia, self).__init__( @@ -33902,6 +33987,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Bolivia, self).__init__( @@ -34232,6 +34318,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Ghana, self).__init__( @@ -34576,6 +34663,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Nigeria, self).__init__( @@ -34934,6 +35022,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Peru, self).__init__( @@ -35273,6 +35362,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Ecuador, self).__init__( @@ -35645,6 +35735,7 @@ class CallsignGrassAirfield: CallsignGrassAirfield.New_York ], } + use_western_callsigns = True def __init__(self): super(Afghanistan, self).__init__( diff --git a/dcs/country.py b/dcs/country.py index 85c6a560..0b9efc17 100644 --- a/dcs/country.py +++ b/dcs/country.py @@ -24,6 +24,7 @@ class Country: callsign: Dict[str, List[str]] = {} planes: List[Type[PlaneType]] = [] helicopters: List[Type[HelicopterType]] = [] + use_western_callsigns = True def __init__(self, _id, name, short_name): self.id = _id diff --git a/dcs/mission.py b/dcs/mission.py index a337d812..cf1ebc72 100644 --- a/dcs/mission.py +++ b/dcs/mission.py @@ -359,8 +359,16 @@ def loaddict(fname: str, mizfile: zipfile.ZipFile, reserved_files: List[str]) -> for col_name in ["blue", "red", "neutrals"]: if col_name in imp_mission["coalition"]: self.coalition[col_name] = Coalition(col_name, imp_mission["coalition"][col_name]["bullseye"]) + # Support .miz files saved by earlier versions of pydcs where neutral country IDs were stored + # under the 'neutral' key instead of the 'neutrals' key in the coalitions section of the LUA + # file. Use an empty dict in this case as DCS will auto-populate the neutral coalition with + # countries that are not in blue or red. + if col_name not in imp_mission["coalitions"] and col_name == 'neutrals': + countries_in_coalition = {} + else: + countries_in_coalition = imp_mission["coalitions"][col_name] status += self.coalition[col_name].load_from_dict(self, imp_mission["coalition"][col_name], - imp_mission["coalitions"][col_name]) + countries_in_coalition) # triggers self.bypassed_triggers = None diff --git a/tools/pydcs_export.lua b/tools/pydcs_export.lua index b58baf5b..0e36602f 100644 --- a/tools/pydcs_export.lua +++ b/tools/pydcs_export.lua @@ -284,6 +284,7 @@ flyable["Yak-52"] = true -- Helicopters flyable["AH-64D_BLK_II"] = true +flyable["CH_47Fbl1"] = true flyable["Ka-50"] = true flyable["Ka-50_3"] = true flyable["Mi-8MT"] = true @@ -948,6 +949,11 @@ local countryPlaneIgnore = { "FULCRUM_LAB" } local countryHeliIgnore = { "Mi_24P", "Ka_50_3" } +local country_uses_western_callsigns = {} +for k,v in pairs(db.callnamesRussia) do + country_uses_western_callsigns[v] = false +end +country_uses_western_callsigns["GDR"] = false local i = 0 while i <= country.maxIndex do local c = country.by_idx[i] @@ -1096,6 +1102,15 @@ while i <= country.maxIndex do end end writeln(file, ' }') + local use_western_callsigns = true + if country_uses_western_callsigns[c.Name] ~= nil then + use_western_callsigns = country_uses_western_callsigns[c.Name] + end + if use_western_callsigns then + writeln(file, ' use_western_callsigns = True') + else + writeln(file, ' use_western_callsigns = False') + end writeln(file, '') writeln(file, ' def __init__(self):')