Clean up convoy code.

This commit is contained in:
Dan Albert
2021-04-20 22:21:42 -07:00
parent 50d8e08a34
commit 6cffc47f3c
11 changed files with 159 additions and 70 deletions

View File

@@ -44,7 +44,7 @@ from game.theater.conflicttheater import FrontLine, ReferencePoint
from game.theater.theatergroundobject import (
TheaterGroundObject,
)
from game.transfers import RoadTransferOrder
from game.transfers import Convoy, RoadTransferOrder
from game.utils import Distance, meters, nautical_miles
from game.weather import TimeOfDay
from gen import Conflict, Package
@@ -827,7 +827,7 @@ class QLiberationMap(QGraphicsView):
self,
scene: QGraphicsScene,
frontline: FrontLine,
convoys: List[RoadTransferOrder],
convoys: List[Convoy],
) -> None:
"""
Thanks to Alquimista for sharing a python implementation of the bezier algorithm this is adapted from.
@@ -895,7 +895,15 @@ class QLiberationMap(QGraphicsView):
def draw_supply_route_between(self, a: ControlPoint, b: ControlPoint) -> None:
scene = self.scene()
convoys = self._transfers_between(a, b)
convoy_map = self.game.transfers.convoys
convoys = []
convoy = convoy_map.find_convoy(a, b)
if convoy is not None:
convoys.append(convoy)
convoy = convoy_map.find_convoy(b, a)
if convoy is not None:
convoys.append(convoy)
frontline = FrontLine(a, b, self.game.theater)
if a.front_is_active(b):
if DisplayOptions.actual_frontline_pos:
@@ -909,7 +917,7 @@ class QLiberationMap(QGraphicsView):
self,
scene: QGraphicsScene,
frontline: FrontLine,
convoys: List[RoadTransferOrder],
convoys: List[Convoy],
) -> None:
posx = frontline.position
h = frontline.attack_heading
@@ -925,7 +933,7 @@ class QLiberationMap(QGraphicsView):
self,
scene: QGraphicsScene,
frontline: FrontLine,
convoys: List[RoadTransferOrder],
convoys: List[Convoy],
) -> None:
self.draw_bezier_frontline(scene, frontline, convoys)
vector = Conflict.frontline_vector(

View File

@@ -9,7 +9,7 @@ from PySide2.QtWidgets import (
)
from game.theater import ControlPoint
from game.transfers import RoadTransferOrder
from game.transfers import Convoy
from qt_ui.uiconstants import COLORS
@@ -22,7 +22,7 @@ class SupplyRouteSegment(QGraphicsLineItem):
y1: float,
control_point_a: ControlPoint,
control_point_b: ControlPoint,
convoys: List[RoadTransferOrder],
convoys: List[Convoy],
parent: Optional[QGraphicsItem] = None,
) -> None:
super().__init__(x0, y0, x1, y1, parent)
@@ -37,19 +37,18 @@ class SupplyRouteSegment(QGraphicsLineItem):
def has_convoys(self) -> bool:
return bool(self.convoys)
@cached_property
def convoy_size(self) -> int:
return sum(sum(c.units.values()) for c in self.convoys)
def make_tooltip(self) -> str:
if not self.has_convoys:
return "No convoys present on this supply route."
units = "units" if self.convoy_size > 1 else "unit"
return (
f"{self.convoy_size} {units} transferring between {self.control_point_a} "
f"and {self.control_point_b}."
)
convoys = []
for convoy in self.convoys:
units = "units" if convoy.size > 1 else "unit"
convoys.append(
f"{convoy.size} {units} transferring from {convoy.origin} to "
f"{convoy.destination}"
)
return "\n".join(convoys)
@property
def line_color(self) -> QColor: