Add AEW&C aircraft to the faction aircraft list.

To avoid confusion, use only the aircraft list for the purchasable
aircraft. This fix also caught a faction's Tu-142 that was not actually
purchasable. Invalid aircraft in the faction aircraft list will now
raise an error.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1074
This commit is contained in:
Dan Albert 2021-05-13 21:44:07 -07:00
parent 99dc91dcb4
commit eec56256e8
3 changed files with 16 additions and 16 deletions

View File

@ -117,6 +117,7 @@ from dcs.planes import (
Yak_40, Yak_40,
plane_map, plane_map,
I_16, I_16,
Tu_142,
) )
from dcs.ships import ( from dcs.ships import (
Boat_Armed_Hi_speed, Boat_Armed_Hi_speed,
@ -456,6 +457,7 @@ PRICES = {
Tu_160: 50, Tu_160: 50,
Tu_22M3: 40, Tu_22M3: 40,
Tu_95MS: 35, Tu_95MS: 35,
Tu_142: 35,
# special # special
IL_76MD: 30, IL_76MD: 30,
An_26B: 25, An_26B: 25,

View File

@ -154,6 +154,8 @@ class Faction:
faction.awacs = load_all_aircraft(json.get("awacs", [])) faction.awacs = load_all_aircraft(json.get("awacs", []))
faction.tankers = load_all_aircraft(json.get("tankers", [])) faction.tankers = load_all_aircraft(json.get("tankers", []))
faction.aircrafts = list(set(faction.aircrafts + faction.awacs))
faction.frontline_units = load_all_vehicles(json.get("frontline_units", [])) faction.frontline_units = load_all_vehicles(json.get("frontline_units", []))
faction.artillery_units = load_all_vehicles(json.get("artillery_units", [])) faction.artillery_units = load_all_vehicles(json.get("artillery_units", []))
faction.infantry_units = load_all_vehicles(json.get("infantry_units", [])) faction.infantry_units = load_all_vehicles(json.get("infantry_units", []))

View File

@ -52,23 +52,19 @@ class QAircraftRecruitmentMenu(QFrame, QRecruitBehaviour):
row = 0 row = 0
unit_types: Set[Type[FlyingType]] = set() unit_types: Set[Type[FlyingType]] = set()
for task in tasks: for unit_type in self.game_model.game.player_faction.aircrafts:
units = db.find_unittype(task, self.game_model.game.player_name) if not issubclass(unit_type, FlyingType):
if not units: raise RuntimeError(f"Non-flying aircraft found in faction: {unit_type}")
if self.cp.is_carrier and unit_type not in db.CARRIER_CAPABLE:
continue continue
for unit in units: if self.cp.is_lha and unit_type not in db.LHA_CAPABLE:
if not issubclass(unit, FlyingType): continue
continue if (
if self.cp.is_carrier and unit not in db.CARRIER_CAPABLE: self.cp.cptype in [ControlPointType.FOB, ControlPointType.FARP]
continue and unit_type not in helicopter_map.values()
if self.cp.is_lha and unit not in db.LHA_CAPABLE: ):
continue continue
if ( unit_types.add(unit_type)
self.cp.cptype in [ControlPointType.FOB, ControlPointType.FARP]
and unit not in helicopter_map.values()
):
continue
unit_types.add(unit)
sorted_units = sorted( sorted_units = sorted(
unit_types, unit_types,