Fix custom waypoint addition/removal.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2063.
This commit is contained in:
Benjamin Fischer 2022-03-18 08:06:41 +01:00 committed by GitHub
parent 01f872c960
commit be67d6dbc6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 21 deletions

View File

@ -71,10 +71,11 @@ class QPredefinedWaypointSelectionComboBox(QFilteredComboBox):
pos = FrontLineConflictDescription.frontline_position(
front_line, self.game.theater
)[0]
wptname = f"Frontline {front_line.name} [CAS]"
wpt = FlightWaypoint(
FlightWaypointType.CUSTOM, pos, Distance.from_meters(800)
wptname, FlightWaypointType.CUSTOM, pos, Distance.from_meters(800)
)
wpt.name = f"Frontline {front_line.name} [CAS]"
wpt.alt_type = "RADIO"
wpt.pretty_name = wpt.name
wpt.description = "Frontline"
@ -90,12 +91,12 @@ class QPredefinedWaypointSelectionComboBox(QFilteredComboBox):
ground_object, BuildingGroundObject
):
wpt = FlightWaypoint(
ground_object.waypoint_name,
FlightWaypointType.CUSTOM,
ground_object.position,
Distance.from_meters(0),
)
wpt.alt_type = "RADIO"
wpt.name = ground_object.waypoint_name
wpt.pretty_name = wpt.name
wpt.obj_name = ground_object.obj_name
wpt.targets.append(ground_object)
@ -116,13 +117,7 @@ class QPredefinedWaypointSelectionComboBox(QFilteredComboBox):
):
for g in ground_object.groups:
for j, u in enumerate(g.units):
wpt = FlightWaypoint(
FlightWaypointType.CUSTOM,
u.position,
Distance.from_meters(0),
)
wpt.alt_type = "RADIO"
wpt.name = wpt.name = (
wptname = (
"["
+ str(ground_object.obj_name)
+ "] : "
@ -130,7 +125,14 @@ class QPredefinedWaypointSelectionComboBox(QFilteredComboBox):
+ " #"
+ str(j)
)
wpt.pretty_name = wpt.name
wpt = FlightWaypoint(
wptname,
FlightWaypointType.CUSTOM,
u.position,
Distance.from_meters(0),
)
wpt.alt_type = "RADIO"
wpt.pretty_name = wptname
wpt.targets.append(u)
wpt.obj_name = ground_object.obj_name
wpt.waypoint_type = FlightWaypointType.CUSTOM
@ -146,10 +148,12 @@ class QPredefinedWaypointSelectionComboBox(QFilteredComboBox):
self.include_friendly and cp.captured
):
wpt = FlightWaypoint(
FlightWaypointType.CUSTOM, cp.position, Distance.from_meters(0)
cp.name,
FlightWaypointType.CUSTOM,
cp.position,
Distance.from_meters(0),
)
wpt.alt_type = "RADIO"
wpt.name = cp.name
if cp.captured:
wpt.description = (
"Position of " + cp.name + " [Friendly Airbase]"

View File

@ -1,5 +1,5 @@
import logging
from typing import Iterable, List, Optional
from typing import Iterable, List, Optional, Any
from PySide2.QtCore import Signal
from PySide2.QtWidgets import (
@ -13,7 +13,8 @@ from PySide2.QtWidgets import (
from game import Game
from game.ato.flight import Flight
from game.ato.flightplans.custom import CustomFlightPlan
from game.ato.flightplans.custom import CustomFlightPlan, CustomLayout
from game.ato.flightplans.flightplan import FlightPlan
from game.ato.flightplans.flightplanbuilder import FlightPlanBuilder
from game.ato.flightplans.formationattack import FormationAttackFlightPlan
from game.ato.flightplans.planningerror import PlanningError
@ -113,7 +114,7 @@ class QFlightWaypointTab(QFrame):
self.degrade_to_custom_flight_plan()
assert isinstance(self.flight.flight_plan, CustomFlightPlan)
self.flight.flight_plan.custom_waypoints.remove(waypoint)
self.flight.flight_plan.layout.custom_waypoints.remove(waypoint)
def on_fast_waypoint(self):
self.subwindow = QPredefinedWaypointSelectionWindow(
@ -127,7 +128,7 @@ class QFlightWaypointTab(QFrame):
return
self.degrade_to_custom_flight_plan()
assert isinstance(self.flight.flight_plan, CustomFlightPlan)
self.flight.flight_plan.custom_waypoints.extend(waypoints)
self.flight.flight_plan.layout.custom_waypoints.extend(waypoints)
self.flight_waypoint_list.update_list()
self.on_change()
@ -135,15 +136,14 @@ class QFlightWaypointTab(QFrame):
rtb = self.planner.generate_rtb_waypoint(self.flight, self.flight.from_cp)
self.degrade_to_custom_flight_plan()
assert isinstance(self.flight.flight_plan, CustomFlightPlan)
self.flight.flight_plan.custom_waypoints.append(rtb)
self.flight.flight_plan.layout.custom_waypoints.append(rtb)
self.flight_waypoint_list.update_list()
self.on_change()
def degrade_to_custom_flight_plan(self) -> None:
if not isinstance(self.flight.flight_plan, CustomFlightPlan):
self.flight.flight_plan = CustomFlightPlan(
flight=self.flight,
waypoints=self.flight.flight_plan.waypoints,
self.flight.flight_plan: FlightPlan[Any] = CustomFlightPlan(
self, CustomLayout(custom_waypoints=self.flight.flight_plan.waypoints)
)
def confirm_recreate(self, task: FlightType) -> None: