mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Ability to configure liveries on flight/flight-member level
This commit is contained in:
@@ -89,6 +89,7 @@ class Flight(
|
||||
|
||||
self.initialize_fuel()
|
||||
self.use_same_loadout_for_all_members = True
|
||||
self.use_same_livery_for_all_members = True
|
||||
|
||||
# Only used by transport missions.
|
||||
self.cargo = cargo
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any
|
||||
from typing import TYPE_CHECKING, Any, Optional
|
||||
|
||||
from game.ato.loadouts import Loadout
|
||||
from game.lasercodes import LaserCode
|
||||
@@ -17,6 +17,7 @@ class FlightMember:
|
||||
self.tgp_laser_code: LaserCode | None = None
|
||||
self.weapon_laser_code: LaserCode | None = None
|
||||
self.properties: dict[str, bool | float | int] = {}
|
||||
self.livery: Optional[str] = None
|
||||
|
||||
def __setstate__(self, state: dict[str, Any]) -> None:
|
||||
if "tgp_laser_code" not in state:
|
||||
|
||||
@@ -95,6 +95,13 @@ class FlightMembers(IFlightRoster):
|
||||
# across all flight members.
|
||||
member.loadout = loadout
|
||||
|
||||
def use_same_livery_for_all_members(self) -> None:
|
||||
if not self.members:
|
||||
return
|
||||
livery = self.members[0].livery
|
||||
for member in self.members[1:]:
|
||||
member.livery = livery
|
||||
|
||||
def use_distinct_loadouts_for_each_member(self) -> None:
|
||||
for member in self.members:
|
||||
member.loadout = member.loadout.clone()
|
||||
|
||||
@@ -124,10 +124,13 @@ class Migrator:
|
||||
try_set_attr(f, "tcn_name")
|
||||
try_set_attr(f, "fuel", f.unit_type.max_fuel)
|
||||
try_set_attr(f, "plane_altitude_offset", 0)
|
||||
try_set_attr(f, "use_same_livery_for_all_members", True)
|
||||
if f.package in f.squadron.coalition.ato.packages:
|
||||
self._update_flight_plan(f)
|
||||
else:
|
||||
to_remove.append(f.id)
|
||||
for m in f.roster.members:
|
||||
try_set_attr(m, "livery", None)
|
||||
for fid in to_remove:
|
||||
self.game.db.flights.remove(fid)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class AircraftPainter:
|
||||
|
||||
def apply_livery(self) -> None:
|
||||
livery = self.determine_livery()
|
||||
if livery is None:
|
||||
return
|
||||
for unit in self.group.units:
|
||||
unit.livery_id = livery
|
||||
for unit, member in zip(self.group.units, self.flight.iter_members()):
|
||||
if not (livery or member.livery):
|
||||
continue
|
||||
unit.livery_id = member.livery if member.livery else livery
|
||||
|
||||
Reference in New Issue
Block a user