Move unit purchase off find_unittype.

This commit is contained in:
Dan Albert 2021-06-07 18:54:21 -07:00
parent ea15421308
commit 27b5f24a0f
4 changed files with 23 additions and 28 deletions

View File

@ -1332,7 +1332,7 @@ def upgrade_to_supercarrier(unit, name: str):
def find_unittype(for_task: Type[MainTask], country_name: str) -> List[Type[UnitType]]: def find_unittype(for_task: Type[MainTask], country_name: str) -> List[Type[UnitType]]:
return [x for x in UNIT_BY_TASK[for_task] if x in FACTIONS[country_name].units] return [x for x in UNIT_BY_TASK[for_task] if x in FACTIONS[country_name].all_units]
MANPADS: List[Type[VehicleType]] = [ MANPADS: List[Type[VehicleType]] = [

View File

@ -3,7 +3,7 @@ from game.data.groundunitclass import GroundUnitClass
import logging import logging
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Optional, Dict, Type, List, Any, cast from typing import Optional, Dict, Type, List, Any, cast, Iterator
import dcs import dcs
from dcs.countries import country_dict from dcs.countries import country_dict
@ -240,7 +240,7 @@ class Faction:
return faction return faction
@property @property
def units(self) -> List[Type[UnitType]]: def all_units(self) -> List[Type[UnitType]]:
return ( return (
self.infantry_units self.infantry_units
+ self.aircrafts + self.aircrafts
@ -251,6 +251,12 @@ class Faction:
+ self.logistics_units + self.logistics_units
) )
@property
def ground_units(self) -> Iterator[Type[VehicleType]]:
yield from self.artillery_units
yield from self.frontline_units
yield from self.logistics_units
def unit_loader(unit: str, class_repository: List[Any]) -> Optional[Type[UnitType]]: def unit_loader(unit: str, class_repository: List[Any]) -> Optional[Type[UnitType]]:
""" """

View File

@ -166,9 +166,7 @@ class ScrollingUnitTransferGrid(QFrame):
scroll_content = QWidget() scroll_content = QWidget()
task_box_layout = QGridLayout() task_box_layout = QGridLayout()
unit_types = set( unit_types = set(self.game_model.game.faction_for(player=True).ground_units)
db.find_unittype(PinpointStrike, self.game_model.game.player_name)
)
sorted_units = sorted( sorted_units = sorted(
{u for u in unit_types if self.cp.base.total_units_of_type(u)}, {u for u in unit_types if self.cp.base.total_units_of_type(u)},
key=lambda u: db.unit_get_expanded_info( key=lambda u: db.unit_get_expanded_info(

View File

@ -7,10 +7,8 @@ from PySide2.QtWidgets import (
QScrollArea, QScrollArea,
QVBoxLayout, QVBoxLayout,
QWidget, QWidget,
QMessageBox,
) )
from dcs.task import PinpointStrike from dcs.unittype import UnitType
from dcs.unittype import FlyingType, UnitType
from game import db from game import db
from game.theater import ControlPoint from game.theater import ControlPoint
@ -32,31 +30,24 @@ class QArmorRecruitmentMenu(QFrame, QRecruitBehaviour):
def init_ui(self): def init_ui(self):
main_layout = QVBoxLayout() main_layout = QVBoxLayout()
units = {
PinpointStrike: db.find_unittype(
PinpointStrike, self.game_model.game.player_name
),
}
scroll_content = QWidget() scroll_content = QWidget()
task_box_layout = QGridLayout() task_box_layout = QGridLayout()
scroll_content.setLayout(task_box_layout) scroll_content.setLayout(task_box_layout)
row = 0 row = 0
for task_type in units.keys(): unit_types = list(
units_column = list(set(units[task_type])) set(self.game_model.game.faction_for(player=True).ground_units)
if len(units_column) == 0: )
continue unit_types.sort(
units_column.sort( key=lambda u: db.unit_get_expanded_info(
key=lambda u: db.unit_get_expanded_info( self.game_model.game.player_country, u, "name"
self.game_model.game.player_country, u, "name"
)
) )
for unit_type in units_column: )
row = self.add_purchase_row(unit_type, task_box_layout, row) for unit_type in unit_types:
stretch = QVBoxLayout() row = self.add_purchase_row(unit_type, task_box_layout, row)
stretch.addStretch() stretch = QVBoxLayout()
task_box_layout.addLayout(stretch, row, 0) stretch.addStretch()
task_box_layout.addLayout(stretch, row, 0)
scroll_content.setLayout(task_box_layout) scroll_content.setLayout(task_box_layout)
scroll = QScrollArea() scroll = QScrollArea()