38 lines
1.2 KiB
Python

from __future__ import annotations
from typing import List
from PySide2.QtCore import Property, QObject, Signal, Slot
from game.server.leaflet import LeafletLatLon
from game.theater import ConflictTheater, FrontLine
from game.utils import nautical_miles
from qt_ui.dialogs import Dialog
class FrontLineJs(QObject):
extentsChanged = Signal()
def __init__(self, front_line: FrontLine, theater: ConflictTheater) -> None:
super().__init__()
self.front_line = front_line
self.theater = theater
@Property(list, notify=extentsChanged)
def extents(self) -> List[LeafletLatLon]:
a = self.theater.point_to_ll(
self.front_line.position.point_from_heading(
self.front_line.attack_heading.right.degrees, nautical_miles(2).meters
)
)
b = self.theater.point_to_ll(
self.front_line.position.point_from_heading(
self.front_line.attack_heading.left.degrees, nautical_miles(2).meters
)
)
return [[a.lat, a.lng], [b.lat, b.lng]]
@Slot()
def showPackageDialog(self) -> None:
Dialog.open_new_package_dialog(self.front_line)