mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add TOT/TOS to kneeboard for AWACS & Tankers
This commit is contained in:
parent
7625725fd8
commit
29d88fd61d
@ -157,8 +157,8 @@ class FlightGroupConfigurator:
|
|||||||
callsign=callsign,
|
callsign=callsign,
|
||||||
freq=channel,
|
freq=channel,
|
||||||
depature_location=self.flight.departure.name,
|
depature_location=self.flight.departure.name,
|
||||||
end_time=self.flight.flight_plan.mission_departure_time,
|
start_time=self.flight.flight_plan.patrol_start_time,
|
||||||
start_time=self.flight.flight_plan.takeoff_time(),
|
end_time=self.flight.flight_plan.patrol_end_time,
|
||||||
blue=self.flight.departure.captured,
|
blue=self.flight.departure.captured,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -27,7 +27,6 @@ import math
|
|||||||
import textwrap
|
import textwrap
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from itertools import groupby
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, Iterator, List, Optional, TYPE_CHECKING, Tuple
|
from typing import Dict, Iterator, List, Optional, TYPE_CHECKING, Tuple
|
||||||
|
|
||||||
@ -514,6 +513,8 @@ class SupportPage(KneeboardPage):
|
|||||||
writer.heading(f"{package.package_description} Package{custom}")
|
writer.heading(f"{package.package_description} Package{custom}")
|
||||||
freq = self.format_frequency(package.frequency).replace("\n", " - ")
|
freq = self.format_frequency(package.frequency).replace("\n", " - ")
|
||||||
writer.text(f" FREQ: {freq}", font=writer.table_font)
|
writer.text(f" FREQ: {freq}", font=writer.table_font)
|
||||||
|
tot = self._format_time(package.time_over_target)
|
||||||
|
writer.text(f" TOT: {tot}", font=writer.table_font)
|
||||||
comm_ladder = []
|
comm_ladder = []
|
||||||
for comm in self.comms:
|
for comm in self.comms:
|
||||||
comm_ladder.append(
|
comm_ladder.append(
|
||||||
@ -544,30 +545,33 @@ class SupportPage(KneeboardPage):
|
|||||||
|
|
||||||
for single_aewc in self.awacs:
|
for single_aewc in self.awacs:
|
||||||
if single_aewc.depature_location is None:
|
if single_aewc.depature_location is None:
|
||||||
dep = "-"
|
tot = "-"
|
||||||
arr = "-"
|
tos = "-"
|
||||||
else:
|
else:
|
||||||
dep = self._format_time(single_aewc.start_time)
|
tot = self._format_time(single_aewc.start_time)
|
||||||
arr = self._format_time(single_aewc.end_time)
|
tos = self._format_duration(
|
||||||
|
single_aewc.end_time - single_aewc.start_time
|
||||||
|
)
|
||||||
|
|
||||||
aewc_ladder.append(
|
aewc_ladder.append(
|
||||||
[
|
[
|
||||||
str(single_aewc.callsign),
|
str(single_aewc.callsign),
|
||||||
self.format_frequency(single_aewc.freq),
|
self.format_frequency(single_aewc.freq),
|
||||||
str(single_aewc.depature_location),
|
str(single_aewc.depature_location),
|
||||||
str(dep),
|
"TOT: " + tot + "\n" + "TOS: " + tos,
|
||||||
str(arr),
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
writer.table(
|
writer.table(
|
||||||
aewc_ladder,
|
aewc_ladder,
|
||||||
headers=["Callsign", "FREQ", "Depature", "ETD", "ETA"],
|
headers=["Callsign", "FREQ", "Departure", "TOT / TOS"],
|
||||||
)
|
)
|
||||||
|
|
||||||
comm_ladder = []
|
comm_ladder = []
|
||||||
writer.heading("Tankers:")
|
writer.heading("Tankers:")
|
||||||
for tanker in self.tankers:
|
for tanker in self.tankers:
|
||||||
|
tot = self._format_time(tanker.start_time)
|
||||||
|
tos = self._format_duration(tanker.end_time - tanker.start_time)
|
||||||
comm_ladder.append(
|
comm_ladder.append(
|
||||||
[
|
[
|
||||||
tanker.callsign,
|
tanker.callsign,
|
||||||
@ -575,10 +579,14 @@ class SupportPage(KneeboardPage):
|
|||||||
tanker.variant,
|
tanker.variant,
|
||||||
str(tanker.tacan),
|
str(tanker.tacan),
|
||||||
self.format_frequency(tanker.freq),
|
self.format_frequency(tanker.freq),
|
||||||
|
"TOT: " + tot + "\n" + "TOS: " + tos,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
writer.table(comm_ladder, headers=["Callsign", "Task", "Type", "TACAN", "FREQ"])
|
writer.table(
|
||||||
|
comm_ladder,
|
||||||
|
headers=["Callsign", "Task", "Type", "TACAN", "FREQ", "TOT / TOS"],
|
||||||
|
)
|
||||||
|
|
||||||
writer.heading("JTAC")
|
writer.heading("JTAC")
|
||||||
jtacs = []
|
jtacs = []
|
||||||
@ -616,6 +624,13 @@ class SupportPage(KneeboardPage):
|
|||||||
local_time = self.start_time + time
|
local_time = self.start_time + time
|
||||||
return f"{local_time.strftime('%H:%M:%S')}{'Z' if local_time.tzinfo is not None else ''}"
|
return f"{local_time.strftime('%H:%M:%S')}{'Z' if local_time.tzinfo is not None else ''}"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _format_duration(time: Optional[datetime.timedelta]) -> str:
|
||||||
|
if time is None:
|
||||||
|
return ""
|
||||||
|
time -= datetime.timedelta(microseconds=time.microseconds)
|
||||||
|
return f"{time}"
|
||||||
|
|
||||||
|
|
||||||
class SeadTaskPage(KneeboardPage):
|
class SeadTaskPage(KneeboardPage):
|
||||||
"""A kneeboard page containing SEAD/DEAD target information."""
|
"""A kneeboard page containing SEAD/DEAD target information."""
|
||||||
|
|||||||
@ -33,8 +33,8 @@ class AwacsInfo(GroupInfo):
|
|||||||
"""AWACS information for the kneeboard."""
|
"""AWACS information for the kneeboard."""
|
||||||
|
|
||||||
depature_location: Optional[str]
|
depature_location: Optional[str]
|
||||||
start_time: Optional[timedelta]
|
start_time: timedelta
|
||||||
end_time: Optional[timedelta]
|
end_time: timedelta
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -43,8 +43,8 @@ class TankerInfo(GroupInfo):
|
|||||||
|
|
||||||
variant: str
|
variant: str
|
||||||
tacan: TacanChannel
|
tacan: TacanChannel
|
||||||
start_time: Optional[timedelta]
|
start_time: timedelta
|
||||||
end_time: Optional[timedelta]
|
end_time: timedelta
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user