mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Improve front line flight plans.
Fixes https://github.com/Khopa/dcs_liberation/issues/462
This commit is contained in:
parent
5e24fe9bb1
commit
3298a5c6ad
@ -6,6 +6,7 @@ Saves from 2.3 are not compatible with 2.4.
|
|||||||
|
|
||||||
* **[Flight Planner]** Air-to-air and SEAD escorts will no longer be automatically planned for packages that are not in range of threats.
|
* **[Flight Planner]** Air-to-air and SEAD escorts will no longer be automatically planned for packages that are not in range of threats.
|
||||||
* **[Flight Planner]** Non-custom flight plans will now navigate around threat areas en route to the target area when practical.
|
* **[Flight Planner]** Non-custom flight plans will now navigate around threat areas en route to the target area when practical.
|
||||||
|
* **[Flight Planner]** Flight plans along front lines now ensure that the race track start is closer to the departure airfield than the race track end.
|
||||||
* **[Campaign AI]** Auto-purchase now prefers airfields that are not within range of the enemy.
|
* **[Campaign AI]** Auto-purchase now prefers airfields that are not within range of the enemy.
|
||||||
* **[Campaign AI]** Auto-purchase now prefers the best aircraft for the task, but will attempt to maintain some variety.
|
* **[Campaign AI]** Auto-purchase now prefers the best aircraft for the task, but will attempt to maintain some variety.
|
||||||
* **[Campaign AI]** Opfor now sells off odd aircraft since they're unlikely to be used.
|
* **[Campaign AI]** Opfor now sells off odd aircraft since they're unlikely to be used.
|
||||||
|
|||||||
@ -1078,7 +1078,7 @@ class FlightPlanBuilder:
|
|||||||
start = end.point_from_heading(heading - 180, diameter)
|
start = end.point_from_heading(heading - 180, diameter)
|
||||||
return start, end
|
return start, end
|
||||||
|
|
||||||
def racetrack_for_frontline(self,
|
def racetrack_for_frontline(self, origin: Point,
|
||||||
front_line: FrontLine) -> Tuple[Point, Point]:
|
front_line: FrontLine) -> Tuple[Point, Point]:
|
||||||
ally_cp, enemy_cp = front_line.control_points
|
ally_cp, enemy_cp = front_line.control_points
|
||||||
|
|
||||||
@ -1099,10 +1099,12 @@ class FlightPlanBuilder:
|
|||||||
combat_width = 35000
|
combat_width = 35000
|
||||||
|
|
||||||
radius = combat_width * 1.25
|
radius = combat_width * 1.25
|
||||||
orbit0p = orbit_center.point_from_heading(heading, radius)
|
start = orbit_center.point_from_heading(heading, radius)
|
||||||
orbit1p = orbit_center.point_from_heading(heading + 180, radius)
|
end = orbit_center.point_from_heading(heading + 180, radius)
|
||||||
|
|
||||||
return orbit0p, orbit1p
|
if end.distance_to_point(origin) < start.distance_to_point(origin):
|
||||||
|
start, end = end, start
|
||||||
|
return start, end
|
||||||
|
|
||||||
def generate_tarcap(self, flight: Flight) -> TarCapFlightPlan:
|
def generate_tarcap(self, flight: Flight) -> TarCapFlightPlan:
|
||||||
"""Generate a CAP flight plan for the given front line.
|
"""Generate a CAP flight plan for the given front line.
|
||||||
@ -1120,7 +1122,8 @@ class FlightPlanBuilder:
|
|||||||
builder = WaypointBuilder(flight, self.game, self.is_player)
|
builder = WaypointBuilder(flight, self.game, self.is_player)
|
||||||
|
|
||||||
if isinstance(location, FrontLine):
|
if isinstance(location, FrontLine):
|
||||||
orbit0p, orbit1p = self.racetrack_for_frontline(location)
|
orbit0p, orbit1p = self.racetrack_for_frontline(
|
||||||
|
flight.departure.position, location)
|
||||||
else:
|
else:
|
||||||
orbit0p, orbit1p = self.racetrack_for_objective(location)
|
orbit0p, orbit1p = self.racetrack_for_objective(location)
|
||||||
|
|
||||||
@ -1279,6 +1282,11 @@ class FlightPlanBuilder:
|
|||||||
center = ingress.point_from_heading(heading, distance / 2)
|
center = ingress.point_from_heading(heading, distance / 2)
|
||||||
egress = ingress.point_from_heading(heading, distance)
|
egress = ingress.point_from_heading(heading, distance)
|
||||||
|
|
||||||
|
ingress_distance = ingress.distance_to_point(flight.departure.position)
|
||||||
|
egress_distance = egress.distance_to_point(flight.departure.position)
|
||||||
|
if egress_distance < ingress_distance:
|
||||||
|
ingress, egress = egress, ingress
|
||||||
|
|
||||||
builder = WaypointBuilder(flight, self.game, self.is_player)
|
builder = WaypointBuilder(flight, self.game, self.is_player)
|
||||||
|
|
||||||
return CasFlightPlan(
|
return CasFlightPlan(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user