diff --git a/game/radio/radios.py b/game/radio/radios.py index 47860d50..9945b473 100644 --- a/game/radio/radios.py +++ b/game/radio/radios.py @@ -237,6 +237,16 @@ RADIOS: List[Radio] = [ # Note: Also capable of 100MHz-150MHz, but we can't model gaps. Radio("R-800L1", (RadioRange(MHz(220), MHz(400), kHz(25), Modulation.AM),)), Radio("R-828", (RadioRange(MHz(20), MHz(60), kHz(25), Modulation.FM),)), + # Mi-8 / Mi-24P + Radio( + "R-863", + ( + RadioRange(MHz(100), MHz(150), kHz(25), Modulation.AM), + RadioRange(MHz(220), MHz(400), kHz(25), Modulation.AM), + RadioRange(MHz(100), MHz(150), kHz(25), Modulation.FM), + RadioRange(MHz(220), MHz(400), kHz(25), Modulation.FM), + ), + ), # UH-1H Radio("AN/ARC-51BX", (RadioRange(MHz(225), MHz(400), kHz(50), Modulation.AM),)), Radio("AN/ARC-131", (RadioRange(MHz(30), MHz(76), kHz(50), Modulation.FM),)), diff --git a/qt_ui/widgets/QFrequencyWidget.py b/qt_ui/widgets/QFrequencyWidget.py index 935ee167..148b2c3a 100644 --- a/qt_ui/widgets/QFrequencyWidget.py +++ b/qt_ui/widgets/QFrequencyWidget.py @@ -49,7 +49,7 @@ class QFrequencyWidget(QWidget): return f"FREQ: {freq}" def open_freq_dialog(self) -> None: - range = RadioRange(MHz(30), MHz(400), kHz(25)) + range = RadioRange(MHz(100), MHz(400), kHz(25)) if isinstance(self.ct, Flight): if self.ct.unit_type.intra_flight_radio is not None: range = self.ct.unit_type.intra_flight_radio.ranges[0] @@ -60,7 +60,12 @@ class QFrequencyWidget(QWidget): def assign_frequency(self) -> None: hz = round(self.frequency_dialog.frequency_input.value() * 10**6) self._try_remove() - self.ct.frequency = RadioFrequency(hertz=hz) + mod = RadioFrequency.modulation + if isinstance(self.ct, Flight): + if self.ct.unit_type.intra_flight_radio is not None: + range = self.ct.unit_type.intra_flight_radio.ranges[0] + mod = range.modulation + self.ct.frequency = RadioFrequency(hertz=hz, modulation=mod) self.gm.allocated_freqs.append(self.ct.frequency) self.freq.setText(self._get_label_text()) self.check_freq() diff --git a/qt_ui/windows/QRadioFrequencyDialog.py b/qt_ui/windows/QRadioFrequencyDialog.py index edcf3639..eb40172c 100644 --- a/qt_ui/windows/QRadioFrequencyDialog.py +++ b/qt_ui/windows/QRadioFrequencyDialog.py @@ -43,7 +43,11 @@ class QRadioFrequencyDialog(QDialog): self.frequency_input.setSingleStep(range.step.mhz) self.frequency_input.setDecimals(3) self.frequency_input.setLocale(QLocale(QLocale.Language.English)) - self.frequency_input.setValue(225.0) + if range.minimum.mhz <= 225.0 < range.maximum.mhz: + self.frequency_input.setValue(225.0) + else: + mid = range.minimum.mhz + (range.maximum.mhz - range.minimum.mhz) / 2 + self.frequency_input.setValue(mid) layout.addWidget(self.frequency_label) layout.addWidget(self.frequency_input) @@ -58,3 +62,5 @@ class QRadioFrequencyDialog(QDialog): self.frequency_input.setValue(container.link4.mhz) elif container.frequency: self.frequency_input.setValue(container.frequency.mhz) + + print(self.container.frequency) diff --git a/resources/units/aircraft/Mi-24P.yaml b/resources/units/aircraft/Mi-24P.yaml index aa1d0fb1..6e24c47a 100644 --- a/resources/units/aircraft/Mi-24P.yaml +++ b/resources/units/aircraft/Mi-24P.yaml @@ -25,3 +25,12 @@ role: Attack/Transport kneeboard_units: "metric" variants: Mi-24P Hind-F: {} +radios: + # Ideally this would use the R-828 for intra-flight to be used for flight comms, + # but DCS won't allow it as the group's frequency (100-400MHz AM only). + intra_flight: R-863 + inter_flight: R-863 + channels: + type: common + intra_flight_radio_index: 1 + inter_flight_radio_index: 1 diff --git a/resources/units/aircraft/Mi-8MT.yaml b/resources/units/aircraft/Mi-8MT.yaml index dfd32982..3aab6632 100644 --- a/resources/units/aircraft/Mi-8MT.yaml +++ b/resources/units/aircraft/Mi-8MT.yaml @@ -13,4 +13,13 @@ price: 5 role: Transport/Light Attack variants: Mi-8MTV2 Hip: {} -kneeboard_units: "metric" \ No newline at end of file +kneeboard_units: "metric" +radios: + # Ideally this would use the R-828 for intra-flight to be used for flight comms, + # but DCS won't allow it as the group's frequency (100-400MHz AM only). + intra_flight: R-863 + inter_flight: R-863 + channels: + type: common + intra_flight_radio_index: 1 + inter_flight_radio_index: 1 diff --git a/resources/units/aircraft/Mirage-F1EE.yaml b/resources/units/aircraft/Mirage-F1EE.yaml index b7405300..9bec4f15 100644 --- a/resources/units/aircraft/Mirage-F1EE.yaml +++ b/resources/units/aircraft/Mirage-F1EE.yaml @@ -12,3 +12,11 @@ role: Multirole Fighter max_range: 200 variants: Mirage-F1EE: {} +radios: + intra_flight: UHF TRAP 137B + inter_flight: V/UHF TRAP 136 + channels: + type: common + namer: mirage-f1ce + intra_flight_radio_index: 2 + inter_flight_radio_index: 1 \ No newline at end of file