mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Fix convoys skipping intermediate stops.
This commit is contained in:
parent
b6cf7a4534
commit
028bfc11eb
@ -29,6 +29,9 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
|
|
||||||
class Transport:
|
class Transport:
|
||||||
|
def __init__(self, destination: ControlPoint):
|
||||||
|
self.destination = destination
|
||||||
|
|
||||||
def find_escape_route(self) -> Optional[ControlPoint]:
|
def find_escape_route(self) -> Optional[ControlPoint]:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@ -98,6 +101,14 @@ class TransferOrder:
|
|||||||
location.base.commision_units(self.units)
|
location.base.commision_units(self.units)
|
||||||
self.units.clear()
|
self.units.clear()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def next_stop(self) -> ControlPoint:
|
||||||
|
if self.transport is None:
|
||||||
|
raise RuntimeError(
|
||||||
|
"TransferOrder.next_stop called with no transport assigned"
|
||||||
|
)
|
||||||
|
return self.transport.destination
|
||||||
|
|
||||||
def proceed(self) -> None:
|
def proceed(self) -> None:
|
||||||
if self.transport is None:
|
if self.transport is None:
|
||||||
return
|
return
|
||||||
@ -116,20 +127,22 @@ class TransferOrder:
|
|||||||
self.kill_all()
|
self.kill_all()
|
||||||
return
|
return
|
||||||
|
|
||||||
self.position = self.destination
|
self.position = self.next_stop
|
||||||
self.transport = None
|
self.transport = None
|
||||||
|
|
||||||
if self.completed:
|
if self.completed:
|
||||||
self.disband_at(self.position)
|
self.disband_at(self.position)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Airlift(Transport):
|
class Airlift(Transport):
|
||||||
"""A transfer order that moves units by cargo planes and helicopters."""
|
"""A transfer order that moves units by cargo planes and helicopters."""
|
||||||
|
|
||||||
transfer: TransferOrder
|
def __init__(
|
||||||
|
self, transfer: TransferOrder, flight: Flight, next_stop: ControlPoint
|
||||||
flight: Flight
|
) -> None:
|
||||||
|
super().__init__(next_stop)
|
||||||
|
self.transfer = transfer
|
||||||
|
self.flight = flight
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def units(self) -> Dict[Type[VehicleType], int]:
|
def units(self) -> Dict[Type[VehicleType], int]:
|
||||||
@ -238,7 +251,7 @@ class AirliftPlanner:
|
|||||||
cargo=transfer,
|
cargo=transfer,
|
||||||
)
|
)
|
||||||
|
|
||||||
transport = Airlift(transfer, flight)
|
transport = Airlift(transfer, flight, self.next_stop)
|
||||||
transfer.transport = transport
|
transfer.transport = transport
|
||||||
|
|
||||||
self.package.add_flight(flight)
|
self.package.add_flight(flight)
|
||||||
@ -252,9 +265,9 @@ class MultiGroupTransport(MissionTarget, Transport):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self, name: str, origin: ControlPoint, destination: ControlPoint
|
self, name: str, origin: ControlPoint, destination: ControlPoint
|
||||||
) -> None:
|
) -> None:
|
||||||
super().__init__(name, origin.position)
|
MissionTarget.__init__(self, name, origin.position)
|
||||||
|
Transport.__init__(self, destination)
|
||||||
self.origin = origin
|
self.origin = origin
|
||||||
self.destination = destination
|
|
||||||
self.transfers: List[TransferOrder] = []
|
self.transfers: List[TransferOrder] = []
|
||||||
|
|
||||||
def is_friendly(self, to_player: bool) -> bool:
|
def is_friendly(self, to_player: bool) -> bool:
|
||||||
|
|||||||
@ -1225,11 +1225,11 @@ class FlightPlanBuilder:
|
|||||||
pickup=pickup,
|
pickup=pickup,
|
||||||
nav_to_drop_off=builder.nav_path(
|
nav_to_drop_off=builder.nav_path(
|
||||||
cargo.origin.position,
|
cargo.origin.position,
|
||||||
cargo.destination.position,
|
cargo.next_stop.position,
|
||||||
altitude,
|
altitude,
|
||||||
altitude_is_agl,
|
altitude_is_agl,
|
||||||
),
|
),
|
||||||
drop_off=builder.drop_off(cargo.destination),
|
drop_off=builder.drop_off(cargo.next_stop),
|
||||||
nav_to_home=builder.nav_path(
|
nav_to_home=builder.nav_path(
|
||||||
cargo.origin.position,
|
cargo.origin.position,
|
||||||
flight.arrival.position,
|
flight.arrival.position,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user