From d5990e60c96487a3d5a8b51c013e65c1bb459d57 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 21 May 2021 00:34:51 +0200 Subject: [PATCH] Helicopter flights can be planned from FOBs --- game/helipad.py | 13 ++++++ game/theater/conflicttheater.py | 3 +- game/theater/controlpoint.py | 34 +++++++++++++-- game/theater/missiontarget.py | 2 +- gen/aircraft.py | 47 ++++++++++++++++----- gen/flights/closestairfields.py | 6 ++- gen/flights/flight.py | 2 + gen/flights/flightplan.py | 1 + gen/groundobjectsgen.py | 2 + resources/campaigns/golan_heights_lite.miz | Bin 29745 -> 30217 bytes 10 files changed, 93 insertions(+), 17 deletions(-) create mode 100644 game/helipad.py diff --git a/game/helipad.py b/game/helipad.py new file mode 100644 index 00000000..8660ad4f --- /dev/null +++ b/game/helipad.py @@ -0,0 +1,13 @@ +from typing import Optional + +from dcs.unitgroup import StaticGroup + +from game.point_with_heading import PointWithHeading + + +class Helipad(PointWithHeading): + def __init__(self): + super(Helipad, self).__init__() + self.heading = 0 + self.occupied = False + self.static_unit: Optional[StaticGroup] = None diff --git a/game/theater/conflicttheater.py b/game/theater/conflicttheater.py index 7e9fa0fe..f4b52de2 100644 --- a/game/theater/conflicttheater.py +++ b/game/theater/conflicttheater.py @@ -41,6 +41,7 @@ from dcs.unitgroup import ( ) from dcs.vehicles import AirDefence, Armor, MissilesSS, Unarmed +from ..helipad import Helipad from ..scenery_group import SceneryGroup from pyproj import CRS, Transformer from shapely import geometry, ops @@ -549,7 +550,7 @@ class MizCampaignLoader: for group in self.helipads: closest, distance = self.objective_info(group) closest.helipads.append( - PointWithHeading.from_point(group.position, group.units[0].heading) + Helipad.from_point(group.position, group.units[0].heading) ) for group in self.factories: diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index f2e96a88..0da38c26 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -10,6 +10,7 @@ from enum import Enum from functools import total_ordering from typing import Any, Dict, Iterator, List, Optional, Set, TYPE_CHECKING, Type, Union +from dcs import helicopters from dcs.mapping import Point from dcs.ships import ( CVN_74_John_C__Stennis, @@ -39,6 +40,7 @@ from .theatergroundobject import ( VehicleGroupGroundObject, ) from ..db import PRICES +from ..helipad import Helipad from ..utils import nautical_miles from ..weather import Conditions @@ -296,7 +298,7 @@ class ControlPoint(MissionTarget, ABC): self.connected_objectives: List[TheaterGroundObject] = [] self.base_defenses: List[BaseDefenseGroundObject] = [] self.preset_locations = PresetLocations() - self.helipads: List[PointWithHeading] = [] + self.helipads: List[Helipad] = [] # TODO: Should be Airbase specific. self.size = size @@ -378,6 +380,29 @@ class ControlPoint(MissionTarget, ABC): return True return False + @property + def has_helipads(self) -> bool: + """ + Returns true if cp has helipads + """ + return len(self.helipads) > 0 + + @property + def has_free_helipad(self) -> bool: + """ + Returns true if cp has a free helipad + """ + return False in [h.occupied for h in self.helipads] + + def get_free_helipad(self) -> Optional[Helipad]: + """ + Returns the first free additional helipad + """ + for h in self.helipads: + if not h.occupied: + return h + return None + def can_recruit_ground_units(self, game: Game) -> bool: """Returns True if this control point is capable of recruiting ground units.""" if not self.can_deploy_ground_units: @@ -1084,10 +1109,13 @@ class Fob(ControlPoint): @property def total_aircraft_parking(self) -> int: - return 0 + return len(self.helipads) def can_operate(self, aircraft: FlyingType) -> bool: - return False + if aircraft in helicopters.helicopter_map.values(): + return True + else: + return False @property def heading(self) -> int: diff --git a/game/theater/missiontarget.py b/game/theater/missiontarget.py index 8d026625..197de586 100644 --- a/game/theater/missiontarget.py +++ b/game/theater/missiontarget.py @@ -46,4 +46,4 @@ class MissionTarget: @property def strike_targets(self) -> List[Union[MissionTarget, Unit]]: - raise NotImplementedError + return [] diff --git a/gen/aircraft.py b/gen/aircraft.py index 92cead03..19391835 100644 --- a/gen/aircraft.py +++ b/gen/aircraft.py @@ -1110,18 +1110,43 @@ class AircraftConflictGenerator: at=self.m.find_group(group_name), ) else: - if not isinstance(cp, Airfield): - raise RuntimeError( - f"Attempted to spawn at airfield for non-airfield {cp}" + + # If the flight is an helicopter flight, then prioritize dedicated helipads + group = None + if flight.unit_type in helicopters.helicopter_map.values(): + helipad = cp.get_free_helipad() + if helipad is not None: + group = self._generate_at_group( + name=name, + side=country, + unit_type=flight.unit_type, + count=flight.count, + start_type=flight.start_type, + at=helipad.static_unit, + ) + group.points[0].action = PointAction.FromGroundArea + group.points[0].type = "From Ground Area" + helipad.occupied = True + + for i in range(flight.count - 1): + helipad = cp.get_free_helipad() + if helipad is not None: + helipad.occupied = True + group.units[1 + i].position = Point(helipad.x, helipad.y) + + if group is None: + if not isinstance(cp, Airfield): + raise RuntimeError( + f"Attempted to spawn at airfield for non-airfield {cp}" + ) + group = self._generate_at_airport( + name=name, + side=country, + unit_type=flight.unit_type, + count=flight.count, + start_type=flight.start_type, + airport=cp.airport, ) - group = self._generate_at_airport( - name=name, - side=country, - unit_type=flight.unit_type, - count=flight.count, - start_type=flight.start_type, - airport=cp.airport, - ) except Exception as e: # Generated when there is no place on Runway or on Parking Slots logging.error(e) diff --git a/gen/flights/closestairfields.py b/gen/flights/closestairfields.py index 4d6bc4fb..6c5c3bfc 100644 --- a/gen/flights/closestairfields.py +++ b/gen/flights/closestairfields.py @@ -25,7 +25,11 @@ class ClosestAirfields: @property def operational_airfields(self) -> Iterator[ControlPoint]: - return (c for c in self.closest_airfields if c.runway_is_operational()) + return ( + c + for c in self.closest_airfields + if c.runway_is_operational() or c.has_helipads + ) def airfields_within(self, distance: Distance) -> Iterator[ControlPoint]: """Iterates over all airfields within the given range of the target. diff --git a/gen/flights/flight.py b/gen/flights/flight.py index 397399ed..6f843c40 100644 --- a/gen/flights/flight.py +++ b/gen/flights/flight.py @@ -142,6 +142,8 @@ class FlightWaypoint: PointAction.FromParkingArea: FlightWaypointType.TAKEOFF, PointAction.FromParkingAreaHot: FlightWaypointType.TAKEOFF, PointAction.FromRunway: FlightWaypointType.TAKEOFF, + PointAction.FromGroundArea: FlightWaypointType.TAKEOFF, + PointAction.FromGroundAreaHot: FlightWaypointType.TAKEOFF, }[point.action] if waypoint.waypoint_type == FlightWaypointType.NAV: waypoint.name = "NAV" diff --git a/gen/flights/flightplan.py b/gen/flights/flightplan.py index e648e4bb..b1b0cc70 100644 --- a/gen/flights/flightplan.py +++ b/gen/flights/flightplan.py @@ -1772,4 +1772,5 @@ class FlightPlanBuilder: for flight in self.package.flights: if flight.departure == airfield: return airfield + raise RuntimeError("Could not find any airfield assigned to this package") diff --git a/gen/groundobjectsgen.py b/gen/groundobjectsgen.py index d6349c8e..62f289e5 100644 --- a/gen/groundobjectsgen.py +++ b/gen/groundobjectsgen.py @@ -587,6 +587,8 @@ class HelipadGenerator: sp.position = pad.position sg.add_point(sp) country.add_static_group(sg) + helipad.static_unit = sg + helipad.occupied = False class GroundObjectsGenerator: diff --git a/resources/campaigns/golan_heights_lite.miz b/resources/campaigns/golan_heights_lite.miz index 3113fd5602d3d79f98db0efeb1bbb86d9c6e9f9a..c05eb89d0711467ce0c0cc71233445549a2e5236 100644 GIT binary patch delta 25882 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 delta 25395 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