from PySide2.QtCore import Signal from PySide2.QtWidgets import QFrame, QGridLayout, QLabel, QPushButton, QVBoxLayout from game import Game from gen.flights.flight import Flight from qt_ui.windows.mission.flight.generator.QCAPMissionGenerator import QCAPMissionGenerator from qt_ui.windows.mission.flight.generator.QCASMissionGenerator import QCASMissionGenerator from qt_ui.windows.mission.flight.generator.QSEADMissionGenerator import QSEADMissionGenerator from qt_ui.windows.mission.flight.generator.QSTRIKEMissionGenerator import QSTRIKEMissionGenerator from qt_ui.windows.mission.flight.waypoints.QFlightWaypointList import QFlightWaypointList from qt_ui.windows.mission.flight.waypoints.QPredefinedWaypointSelectionWindow import QPredefinedWaypointSelectionWindow class QFlightWaypointTab(QFrame): on_flight_changed = Signal() def __init__(self, game: Game, flight: Flight): super(QFlightWaypointTab, self).__init__() self.flight = flight self.game = game self.planner = self.game.planners[self.flight.from_cp.id] self.init_ui() def init_ui(self): layout = QGridLayout() rlayout = QVBoxLayout() self.flight_waypoint_list = QFlightWaypointList(self.flight) self.open_fast_waypoint_button = QPushButton("Add Waypoint") self.open_fast_waypoint_button.clicked.connect(self.on_fast_waypoint) self.cas_generator = QPushButton("Gen. CAS") self.cas_generator.clicked.connect(self.on_cas_generator) self.cap_generator = QPushButton("Gen. CAP") self.cap_generator.clicked.connect(self.on_cap_generator) self.sead_generator = QPushButton("Gen. SEAD/DEAD") self.sead_generator.clicked.connect(self.on_sead_generator) self.strike_generator = QPushButton("Gen. STRIKE") self.strike_generator.clicked.connect(self.on_strike_generator) self.rtb_waypoint = QPushButton("Add RTB Waypoint") self.rtb_waypoint.clicked.connect(self.on_rtb_waypoint) self.ascend_waypoint = QPushButton("Add Ascend Waypoint") self.ascend_waypoint.clicked.connect(self.on_ascend_waypoint) self.descend_waypoint = QPushButton("Add Descend Waypoint") self.descend_waypoint.clicked.connect(self.on_descend_waypoint) self.delete_selected = QPushButton("Delete Selected") self.delete_selected.clicked.connect(self.on_delete_waypoint) layout.addWidget(self.flight_waypoint_list, 0, 0) rlayout.addWidget(QLabel("Generator :")) rlayout.addWidget(QLabel("AI compatible")) rlayout.addWidget(self.cas_generator) rlayout.addWidget(self.cap_generator) rlayout.addWidget(self.sead_generator) rlayout.addWidget(self.strike_generator) rlayout.addWidget(QLabel("Advanced : ")) rlayout.addWidget(QLabel("Do not use for AI flights")) rlayout.addWidget(self.ascend_waypoint) rlayout.addWidget(self.descend_waypoint) rlayout.addWidget(self.rtb_waypoint) rlayout.addWidget(self.open_fast_waypoint_button) rlayout.addWidget(self.delete_selected) rlayout.addStretch() layout.addLayout(rlayout, 0, 1) self.setLayout(layout) def on_delete_waypoint(self): wpt = self.flight_waypoint_list.selectionModel().currentIndex().row() if wpt > 0: del self.flight.points[wpt-1] self.flight_waypoint_list.update_list() self.on_change() def on_fast_waypoint(self): self.subwindow = QPredefinedWaypointSelectionWindow(self.game, self.flight, self.flight_waypoint_list) self.subwindow.finished.connect(self.on_change) self.subwindow.show() def on_ascend_waypoint(self): ascend = self.planner.generate_ascend_point(self.flight.from_cp) self.flight.points.append(ascend) self.flight_waypoint_list.update_list() self.on_change() def on_rtb_waypoint(self): rtb = self.planner.generate_rtb_waypoint(self.flight.from_cp) self.flight.points.append(rtb) self.flight_waypoint_list.update_list() self.on_change() def on_descend_waypoint(self): descend = self.planner.generate_descend_point(self.flight.from_cp) self.flight.points.append(descend) self.flight_waypoint_list.update_list() self.on_change() def on_cas_generator(self): self.subwindow = QCASMissionGenerator(self.game, self.flight, self.flight_waypoint_list) self.subwindow.finished.connect(self.on_change) self.subwindow.show() def on_cap_generator(self): self.subwindow = QCAPMissionGenerator(self.game, self.flight, self.flight_waypoint_list) self.subwindow.finished.connect(self.on_change) self.subwindow.show() def on_sead_generator(self): self.subwindow = QSEADMissionGenerator(self.game, self.flight, self.flight_waypoint_list) self.subwindow.finished.connect(self.on_change) self.subwindow.show() def on_strike_generator(self): self.subwindow = QSTRIKEMissionGenerator(self.game, self.flight, self.flight_waypoint_list) self.subwindow.finished.connect(self.on_change) self.subwindow.show() def on_change(self): self.flight_waypoint_list.update_list() self.on_flight_changed.emit()