mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
- Fix tgogenerator - Fix UI for ForceGroup and Layouts - Fix ammo depot handling - Split bigger files in smaller meaningful files (TGO, layouts, forces) - Renamed Template to Layout - Renamed GroundGroup to TheaterGroup and GroundUnit to TheaterUnit - Reorganize Layouts and UnitGroups to a ArmedForces class and ForceGroup similar to the AirWing and Squadron - Reworded the UnitClass, GroupRole, GroupTask (adopted to PEP8) and reworked the connection from Role and Task - added comments - added missing unit classes - added temp workaround for missing classes - add repariable property to TheaterUnit - Review and Cleanup Added serialization for loaded templates Loading the templates from the .miz files takes a lot of computation time and in the future there will be more templates added to the system. Therefore a local pickle serialization for the loaded templates was re-added: - The pickle will be created the first time the TemplateLoader will be accessed - Pickle is stored in Liberation SaveDir - Added UI option to (re-)import templates
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Sequence
|
|
from typing import Iterator, TYPE_CHECKING, Union
|
|
|
|
from dcs.mapping import Point
|
|
from dcs.unit import Unit
|
|
|
|
if TYPE_CHECKING:
|
|
from game.ato.flighttype import FlightType
|
|
from game.theater import TheaterUnit
|
|
|
|
|
|
class MissionTarget:
|
|
def __init__(self, name: str, position: Point) -> None:
|
|
"""Initializes a mission target.
|
|
|
|
Args:
|
|
name: The name of the mission target.
|
|
position: The location of the mission target.
|
|
"""
|
|
self.name = name
|
|
self.position = position
|
|
|
|
def distance_to(self, other: MissionTarget) -> float:
|
|
"""Computes the distance to the given mission target."""
|
|
return self.position.distance_to_point(other.position)
|
|
|
|
def is_friendly(self, to_player: bool) -> bool:
|
|
"""Returns True if the objective is in friendly territory."""
|
|
raise NotImplementedError
|
|
|
|
def mission_types(self, for_player: bool) -> Iterator[FlightType]:
|
|
from game.ato import FlightType
|
|
|
|
if self.is_friendly(for_player):
|
|
yield FlightType.BARCAP
|
|
else:
|
|
yield from [
|
|
FlightType.ESCORT,
|
|
FlightType.TARCAP,
|
|
FlightType.SEAD_ESCORT,
|
|
FlightType.SWEEP,
|
|
# TODO: FlightType.ELINT,
|
|
# TODO: FlightType.EWAR,
|
|
# TODO: FlightType.RECON,
|
|
]
|
|
|
|
@property
|
|
def strike_targets(self) -> list[TheaterUnit]:
|
|
return []
|