diff --git a/qt_ui/windows/basemenu/QBaseMenu2.py b/qt_ui/windows/basemenu/QBaseMenu2.py index 65b49710..a4793b97 100644 --- a/qt_ui/windows/basemenu/QBaseMenu2.py +++ b/qt_ui/windows/basemenu/QBaseMenu2.py @@ -172,6 +172,8 @@ class QBaseMenu2(QDialog): return "./resources/ui/carrier.png" elif self.cp.cptype == ControlPointType.LHA_GROUP: return "./resources/ui/lha.png" + elif self.cp.cptype == ControlPointType.FOB: + return "./resources/ui/fob.png" else: return "./resources/ui/airbase.png" diff --git a/qt_ui/windows/basemenu/QBaseMenuTabs.py b/qt_ui/windows/basemenu/QBaseMenuTabs.py index b33cc733..c6c35603 100644 --- a/qt_ui/windows/basemenu/QBaseMenuTabs.py +++ b/qt_ui/windows/basemenu/QBaseMenuTabs.py @@ -1,6 +1,6 @@ from PySide2.QtWidgets import QTabWidget -from game.theater import ControlPoint, OffMapSpawn +from game.theater import ControlPoint, OffMapSpawn, Fob from qt_ui.models import GameModel from qt_ui.windows.basemenu.airfield.QAirfieldCommand import QAirfieldCommand from qt_ui.windows.basemenu.base_defenses.QBaseDefensesHQ import QBaseDefensesHQ @@ -19,14 +19,26 @@ class QBaseMenuTabs(QTabWidget): self.intel = QIntelInfo(cp, game_model.game) self.addTab(self.intel, "Intel") else: - self.airfield_command = QAirfieldCommand(cp, game_model) - self.addTab(self.airfield_command, "Airfield Command") - if cp.is_carrier: - self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) - self.addTab(self.base_defenses_hq, "Fleet") - elif not isinstance(cp, OffMapSpawn): - self.ground_forces_hq = QGroundForcesHQ(cp, game_model) - self.addTab(self.ground_forces_hq, "Ground Forces HQ") - self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) - self.addTab(self.base_defenses_hq, "Base Defenses") + if cp: + if isinstance(cp, Fob): + self.ground_forces_hq = QGroundForcesHQ(cp, game_model) + self.addTab(self.ground_forces_hq, "Ground Forces HQ") + if cp.helipads: + self.airfield_command = QAirfieldCommand(cp, game_model) + self.addTab(self.airfield_command, "Heliport") + self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) + self.addTab(self.base_defenses_hq, "Base Defenses") + else: + + self.airfield_command = QAirfieldCommand(cp, game_model) + self.addTab(self.airfield_command, "Airfield Command") + + if cp.is_carrier: + self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) + self.addTab(self.base_defenses_hq, "Fleet") + elif not isinstance(cp, OffMapSpawn): + self.ground_forces_hq = QGroundForcesHQ(cp, game_model) + self.addTab(self.ground_forces_hq, "Ground Forces HQ") + self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) + self.addTab(self.base_defenses_hq, "Base Defenses") diff --git a/qt_ui/windows/basemenu/airfield/QAircraftRecruitmentMenu.py b/qt_ui/windows/basemenu/airfield/QAircraftRecruitmentMenu.py index d5da57af..c332d768 100644 --- a/qt_ui/windows/basemenu/airfield/QAircraftRecruitmentMenu.py +++ b/qt_ui/windows/basemenu/airfield/QAircraftRecruitmentMenu.py @@ -12,11 +12,12 @@ from PySide2.QtWidgets import ( QVBoxLayout, QWidget, ) +from dcs.helicopters import helicopter_map from dcs.task import CAP, CAS, AWACS from dcs.unittype import FlyingType, UnitType from game import db -from game.theater import ControlPoint +from game.theater import ControlPoint, ControlPointType from qt_ui.models import GameModel from qt_ui.uiconstants import ICONS from qt_ui.windows.basemenu.QRecruitBehaviour import QRecruitBehaviour @@ -63,6 +64,8 @@ class QAircraftRecruitmentMenu(QFrame, QRecruitBehaviour): continue if self.cp.is_lha and unit not in db.LHA_CAPABLE: continue + if self.cp.cptype in [ControlPointType.FOB, ControlPointType.FARP] and unit not in helicopter_map.values(): + continue unit_types.add(unit) sorted_units = sorted( diff --git a/resources/ui/fob.png b/resources/ui/fob.png new file mode 100644 index 00000000..a64ae073 Binary files /dev/null and b/resources/ui/fob.png differ