Fix unit info menus for aircraft.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1586
This commit is contained in:
Dan Albert 2021-09-01 19:18:19 -07:00
parent 9c3171f1ce
commit 16d397db1c
2 changed files with 17 additions and 3 deletions

View File

@ -1,9 +1,11 @@
from abc import abstractmethod from abc import abstractmethod
from typing import TypeVar, Generic from typing import TypeVar, Generic, Any
from game import Game from game import Game
from game.coalition import Coalition from game.coalition import Coalition
from game.dcs.aircrafttype import AircraftType
from game.dcs.groundunittype import GroundUnitType from game.dcs.groundunittype import GroundUnitType
from game.dcs.unittype import UnitType
from game.squadrons import Squadron from game.squadrons import Squadron
from game.theater import ControlPoint from game.theater import ControlPoint
@ -90,6 +92,10 @@ class PurchaseAdapter(Generic[ItemType]):
def name_of(self, item: ItemType, multiline: bool = False) -> str: def name_of(self, item: ItemType, multiline: bool = False) -> str:
... ...
@abstractmethod
def unit_type_of(self, item: ItemType) -> UnitType[Any]:
...
class AircraftPurchaseAdapter(PurchaseAdapter[Squadron]): class AircraftPurchaseAdapter(PurchaseAdapter[Squadron]):
def __init__(self, control_point: ControlPoint) -> None: def __init__(self, control_point: ControlPoint) -> None:
@ -132,6 +138,9 @@ class AircraftPurchaseAdapter(PurchaseAdapter[Squadron]):
separator = " " separator = " "
return separator.join([item.aircraft.name, str(item)]) return separator.join([item.aircraft.name, str(item)])
def unit_type_of(self, item: Squadron) -> AircraftType:
return item.aircraft
class GroundUnitPurchaseAdapter(PurchaseAdapter[GroundUnitType]): class GroundUnitPurchaseAdapter(PurchaseAdapter[GroundUnitType]):
def __init__( def __init__(
@ -172,3 +181,6 @@ class GroundUnitPurchaseAdapter(PurchaseAdapter[GroundUnitType]):
def name_of(self, item: GroundUnitType, multiline: bool = False) -> str: def name_of(self, item: GroundUnitType, multiline: bool = False) -> str:
return f"{item}" return f"{item}"
def unit_type_of(self, item: GroundUnitType) -> GroundUnitType:
return item

View File

@ -273,6 +273,8 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
else: else:
return "Unit can not be sold." return "Unit can not be sold."
def info(self, unit_type: UnitType) -> None: def info(self, item: TransactionItemType) -> None:
self.info_window = QUnitInfoWindow(self.game_model.game, unit_type) self.info_window = QUnitInfoWindow(
self.game_model.game, self.purchase_adapter.unit_type_of(item)
)
self.info_window.show() self.info_window.show()