mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime, timedelta
|
|
from typing import TYPE_CHECKING
|
|
|
|
from dcs import Point
|
|
|
|
from game.ato.traveltime import TotEstimator
|
|
from .flightstate import FlightState
|
|
from ..starttype import StartType
|
|
|
|
if TYPE_CHECKING:
|
|
from game.sim.gameupdateevents import GameUpdateEvents
|
|
|
|
|
|
class Uninitialized(FlightState):
|
|
def on_game_tick(
|
|
self, events: GameUpdateEvents, time: datetime, duration: timedelta
|
|
) -> None:
|
|
raise RuntimeError("Attempted to simulate flight that is not fully initialized")
|
|
|
|
@property
|
|
def is_waiting_for_start(self) -> bool:
|
|
raise RuntimeError("Attempted to simulate flight that is not fully initialized")
|
|
|
|
def estimate_position(self) -> Point:
|
|
raise RuntimeError("Attempted to simulate flight that is not fully initialized")
|
|
|
|
@property
|
|
def spawn_type(self) -> StartType:
|
|
raise RuntimeError("Attempted to simulate flight that is not fully initialized")
|
|
|
|
@property
|
|
def description(self) -> str:
|
|
estimator = TotEstimator(self.flight.package)
|
|
delay = estimator.mission_start_time(self.flight)
|
|
if self.flight.start_type is StartType.COLD:
|
|
action = "Starting up"
|
|
elif self.flight.start_type is StartType.WARM:
|
|
action = "Taxiing"
|
|
elif self.flight.start_type is StartType.RUNWAY:
|
|
action = "Taking off"
|
|
elif self.flight.start_type is StartType.IN_FLIGHT:
|
|
action = "In flight"
|
|
else:
|
|
raise ValueError(f"Unhandled StartType: {self.flight.start_type}")
|
|
return f"{action} in {delay}"
|