Other coalition TGO spawns are now generated with the correct faction.

This commit is contained in:
MetalStormGhost 2023-12-26 14:36:33 +02:00
parent a4d8c14579
commit 200812a39b

View File

@ -122,6 +122,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
self.game = game self.game = game
self.m = mission self.m = mission
self.unit_map = unit_map self.unit_map = unit_map
self.coalition = ground_object.coalition
@property @property
def culled(self) -> bool: def culled(self) -> bool:
@ -139,9 +140,9 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
unit_class: Class of unit to return. unit_class: Class of unit to return.
""" """
faction_units = ( faction_units = (
set(self.ground_object.coalition.faction.frontline_units) set(self.coalition.faction.frontline_units)
| set(self.ground_object.coalition.faction.artillery_units) | set(self.coalition.faction.artillery_units)
| set(self.ground_object.coalition.faction.logistics_units) | set(self.coalition.faction.logistics_units)
) )
of_class = list({u for u in faction_units if u.unit_class is unit_class}) of_class = list({u for u in faction_units if u.unit_class is unit_class})
@ -184,7 +185,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
max_num: Maximum number of units to generate per group. max_num: Maximum number of units to generate per group.
""" """
if self.ground_object.coalition.faction.has_access_to_unit_class(unit_class): if self.coalition.faction.has_access_to_unit_class(unit_class):
unit_type = self.ground_unit_of_class(unit_class) unit_type = self.ground_unit_of_class(unit_class)
if unit_type is not None and len(vehicle_units) < max_num: if unit_type is not None and len(vehicle_units) < max_num:
unit_id = self.game.next_unit_id() unit_id = self.game.next_unit_id()
@ -236,7 +237,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
max_num: Maximum number of units to generate per group. max_num: Maximum number of units to generate per group.
""" """
unit_type = None unit_type = None
faction = self.ground_object.coalition.faction faction = self.coalition.faction
is_player = True is_player = True
side = ( side = (
2 2
@ -286,7 +287,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
default_ifv_unit_chinese = groundunittype default_ifv_unit_chinese = groundunittype
elif unit == vehicles.Armor.MTLB: elif unit == vehicles.Armor.MTLB:
default_amphibious_unit = groundunittype default_amphibious_unit = groundunittype
if self.ground_object.coalition.faction.has_access_to_dcs_type(unit): if self.coalition.faction.has_access_to_dcs_type(unit):
if groundunittype.unit_class == unit_class: if groundunittype.unit_class == unit_class:
unit_type = groundunittype unit_type = groundunittype
break break
@ -345,15 +346,15 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
if self.culled: if self.culled:
return return
cp_name_trimmed = "".join( cp_name_trimmed = "".join(
[i for i in self.ground_object.control_point.name.lower() if i.isalnum()] [i for i in self.ground_object.control_point.name.lower() if i.isalpha()]
) )
country_name_trimmed = "".join( country_name_trimmed = "".join(
[i for i in self.country.shortname.lower() if i.isalnum()] [i for i in self.country.shortname.lower() if i.isalpha()]
) )
for group in self.ground_object.groups: for group in self.ground_object.groups:
vehicle_units: list[TheaterUnit] = [] vehicle_units: list[TheaterUnit] = []
# Split the different unit types to be compliant to dcs limitation
for unit in group.units: for unit in group.units:
if unit.is_static: if unit.is_static:
# Add supply convoy # Add supply convoy
@ -445,7 +446,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
break break
cp_name_trimmed = "".join( cp_name_trimmed = "".join(
[i for i in control_point.name.lower() if i.isalnum()] [i for i in control_point.name.lower() if i.isalpha()]
) )
is_player = True is_player = True
side = ( side = (
@ -554,7 +555,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
break break
cp_name_trimmed = "".join( cp_name_trimmed = "".join(
[i for i in control_point.name.lower() if i.isalnum()] [i for i in control_point.name.lower() if i.isalpha()]
) )
is_player = True is_player = True
side = ( side = (
@ -565,7 +566,7 @@ class PretenseGroundObjectGenerator(GroundObjectGenerator):
for unit in units: for unit in units:
assert issubclass(unit.type, VehicleType) assert issubclass(unit.type, VehicleType)
faction = unit.ground_object.control_point.coalition.faction faction = self.coalition.faction
if vehicle_group is None: if vehicle_group is None:
vehicle_group = self.m.vehicle_group( vehicle_group = self.m.vehicle_group(
self.country, self.country,
@ -647,7 +648,7 @@ class PretenseTgoGenerator(TgoGenerator):
def generate(self) -> None: def generate(self) -> None:
for cp in self.game.theater.controlpoints: for cp in self.game.theater.controlpoints:
cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalnum()]) cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalpha()])
for side in range(1, 3): for side in range(1, 3):
if cp_name_trimmed not in self.game.pretense_ground_supply[side]: if cp_name_trimmed not in self.game.pretense_ground_supply[side]:
self.game.pretense_ground_supply[side][cp_name_trimmed] = list() self.game.pretense_ground_supply[side][cp_name_trimmed] = list()
@ -770,6 +771,7 @@ class PretenseTgoGenerator(TgoGenerator):
else: else:
continue continue
generator.coalition = other_coalition
generator.generate() generator.generate()
self.mission_data.runways = list(self.runways.values()) self.mission_data.runways = list(self.runways.values())