Add preset configuration for strike targets.

This commit is contained in:
Dan Albert 2020-11-19 21:20:40 -08:00
parent c1614ad5a7
commit ff751c30f9

View File

@ -17,6 +17,7 @@ from dcs.countries import (
from dcs.country import Country from dcs.country import Country
from dcs.mapping import Point from dcs.mapping import Point
from dcs.ships import CVN_74_John_C__Stennis, LHA_1_Tarawa from dcs.ships import CVN_74_John_C__Stennis, LHA_1_Tarawa
from dcs.statics import Fortification
from dcs.terrain import ( from dcs.terrain import (
caucasus, caucasus,
nevada, nevada,
@ -26,7 +27,7 @@ from dcs.terrain import (
thechannel, thechannel,
) )
from dcs.terrain.terrain import Airport, Terrain from dcs.terrain.terrain import Airport, Terrain
from dcs.unitgroup import MovingGroup, ShipGroup, VehicleGroup from dcs.unitgroup import Group, ShipGroup, StaticGroup, VehicleGroup
from dcs.vehicles import AirDefence, Armor from dcs.vehicles import AirDefence, Armor
from gen.flights.flight import FlightType from gen.flights.flight import FlightType
@ -96,6 +97,7 @@ class MizCampaignLoader:
EWR_UNIT_TYPE = AirDefence.EWR_55G6.id EWR_UNIT_TYPE = AirDefence.EWR_55G6.id
SAM_UNIT_TYPE = AirDefence.SAM_SA_10_S_300PS_SR_64H6E.id SAM_UNIT_TYPE = AirDefence.SAM_SA_10_S_300PS_SR_64H6E.id
GARRISON_UNIT_TYPE = AirDefence.SAM_SA_19_Tunguska_2S6.id GARRISON_UNIT_TYPE = AirDefence.SAM_SA_19_Tunguska_2S6.id
STRIKE_TARGET_UNIT_TYPE = Fortification.Workshop_A.id
BASE_DEFENSE_RADIUS = nm_to_meter(2) BASE_DEFENSE_RADIUS = nm_to_meter(2)
@ -181,6 +183,12 @@ class MizCampaignLoader:
if group.units[0].type == self.GARRISON_UNIT_TYPE: if group.units[0].type == self.GARRISON_UNIT_TYPE:
yield group yield group
@property
def strike_targets(self) -> Iterator[StaticGroup]:
for group in self.blue.static_group:
if group.units[0].type == self.STRIKE_TARGET_UNIT_TYPE:
yield group
@cached_property @cached_property
def control_points(self) -> Dict[int, ControlPoint]: def control_points(self) -> Dict[int, ControlPoint]:
control_points = {} control_points = {}
@ -242,7 +250,7 @@ class MizCampaignLoader:
self.control_points[origin.id]) self.control_points[origin.id])
return front_lines return front_lines
def objective_info(self, group: MovingGroup) -> Tuple[ControlPoint, int]: def objective_info(self, group: Group) -> Tuple[ControlPoint, int]:
closest = self.theater.closest_control_point(group.position) closest = self.theater.closest_control_point(group.position)
distance = closest.position.distance_to_point(group.position) distance = closest.position.distance_to_point(group.position)
return closest, distance return closest, distance
@ -267,6 +275,10 @@ class MizCampaignLoader:
closest, distance = self.objective_info(group) closest, distance = self.objective_info(group)
closest.preset_locations.ewrs.append(group.position) closest.preset_locations.ewrs.append(group.position)
for group in self.strike_targets:
closest, distance = self.objective_info(group)
closest.preset_locations.strike_locations.append(group.position)
def populate_theater(self) -> None: def populate_theater(self) -> None:
for control_point in self.control_points.values(): for control_point in self.control_points.values():
self.theater.add_controlpoint(control_point) self.theater.add_controlpoint(control_point)