mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Rename UnitType.name what it is: the variant ID.
This property affects safe compat because the ID is what gets preserved in the save, but it's unfortunately also used as the display name, which means changing the display name breaks save compat. It also prevents us from changing display names without breaking faction definitions. This is the first step in fixing that. The next is adding a separate display_name property that can be updated without breaking either of those.
This commit is contained in:
@@ -611,12 +611,12 @@ class AircraftTypeList(QListView):
|
||||
self.add_aircraft_type(aircraft)
|
||||
|
||||
def remove_aircraft_type(self, aircraft: AircraftType):
|
||||
for item in self.item_model.findItems(aircraft.name):
|
||||
for item in self.item_model.findItems(aircraft.variant_id):
|
||||
self.item_model.removeRow(item.row())
|
||||
self.page_index_changed.emit(self.selectionModel().currentIndex().row())
|
||||
|
||||
def add_aircraft_type(self, aircraft: AircraftType):
|
||||
aircraft_item = QStandardItem(aircraft.name)
|
||||
aircraft_item = QStandardItem(aircraft.variant_id)
|
||||
icon = self.icon_for(aircraft)
|
||||
if icon is not None:
|
||||
aircraft_item.setIcon(icon)
|
||||
@@ -728,7 +728,7 @@ class AirWingConfigurationTab(QWidget):
|
||||
)
|
||||
|
||||
# Add Squadron
|
||||
if not self.type_list.item_model.findItems(selected_type.name):
|
||||
if not self.type_list.item_model.findItems(selected_type.variant_id):
|
||||
self.type_list.add_aircraft_type(selected_type)
|
||||
# TODO Select the newly added type
|
||||
self.squadrons_panel.add_squadron_to_panel(squadron)
|
||||
@@ -814,8 +814,8 @@ class SquadronAircraftTypeSelector(QComboBox):
|
||||
super().__init__()
|
||||
self.setSizeAdjustPolicy(self.AdjustToContents)
|
||||
|
||||
for type in sorted(types, key=lambda type: type.name):
|
||||
self.addItem(type.name, type)
|
||||
for type in sorted(types, key=lambda type: type.variant_id):
|
||||
self.addItem(type.variant_id, type)
|
||||
|
||||
if selected_aircraft:
|
||||
self.setCurrentText(selected_aircraft)
|
||||
|
||||
@@ -43,7 +43,7 @@ class SquadronDelegate(TwoColumnRowDelegate):
|
||||
nickname = ""
|
||||
return f"{squadron.name}{nickname}"
|
||||
elif (row, column) == (0, 1):
|
||||
return squadron.aircraft.name
|
||||
return squadron.aircraft.variant_id
|
||||
elif (row, column) == (1, 0):
|
||||
return squadron.location.name
|
||||
elif (row, column) == (1, 1):
|
||||
@@ -130,7 +130,7 @@ class AircraftInventoryData:
|
||||
player = "Player" if pilot.player else "AI"
|
||||
yield AircraftInventoryData(
|
||||
flight.departure.name,
|
||||
flight.unit_type.name,
|
||||
flight.unit_type.variant_id,
|
||||
flight_type,
|
||||
target,
|
||||
pilot_name,
|
||||
@@ -143,7 +143,7 @@ class AircraftInventoryData:
|
||||
) -> Iterator[AircraftInventoryData]:
|
||||
for _ in range(0, squadron.untasked_aircraft):
|
||||
yield AircraftInventoryData(
|
||||
squadron.name, squadron.aircraft.name, "Idle", "N/A", "N/A", "N/A"
|
||||
squadron.name, squadron.aircraft.variant_id, "Idle", "N/A", "N/A", "N/A"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,9 @@ class LossGrid(QGridLayout):
|
||||
def __init__(self, debriefing: Debriefing, player: bool) -> None:
|
||||
super().__init__()
|
||||
|
||||
self.add_loss_rows(debriefing.air_losses.by_type(player), lambda u: u.name)
|
||||
self.add_loss_rows(
|
||||
debriefing.air_losses.by_type(player), lambda u: u.variant_id
|
||||
)
|
||||
self.add_loss_rows(
|
||||
debriefing.front_line_losses_by_type(player), lambda u: str(u)
|
||||
)
|
||||
|
||||
@@ -66,7 +66,7 @@ class QUnitInfoWindow(QDialog):
|
||||
self.setModal(True)
|
||||
self.game = game
|
||||
self.unit_type = unit_type
|
||||
self.name = unit_type.name
|
||||
self.name = unit_type.variant_id
|
||||
self.setWindowTitle(f"Unit Info: {self.name}")
|
||||
self.setWindowIcon(QIcon("./resources/icon.png"))
|
||||
self.setMinimumHeight(570)
|
||||
@@ -93,7 +93,7 @@ class QUnitInfoWindow(QDialog):
|
||||
self.details_grid_layout.setMargin(0)
|
||||
|
||||
self.name_box = QLabel(
|
||||
f"<b>Name:</b> {unit_type.manufacturer} {unit_type.name}"
|
||||
f"<b>Name:</b> {unit_type.manufacturer} {unit_type.variant_id}"
|
||||
)
|
||||
self.name_box.setProperty("style", "info-element")
|
||||
|
||||
|
||||
@@ -33,11 +33,11 @@ class DepartingConvoyInfo(QGroupBox):
|
||||
if unit_type.dcs_id in VEHICLES_ICONS.keys():
|
||||
icon.setPixmap(VEHICLES_ICONS[unit_type.dcs_id])
|
||||
else:
|
||||
icon.setText("<b>" + unit_type.name + "</b>")
|
||||
icon.setText("<b>" + unit_type.variant_id + "</b>")
|
||||
icon.setProperty("style", "icon-armor")
|
||||
unit_layout.addWidget(icon, idx, 0)
|
||||
unit_layout.addWidget(
|
||||
QLabel(f"{count} x <strong>{unit_type.name}</strong>"),
|
||||
QLabel(f"{count} x <strong>{unit_type.variant_id}</strong>"),
|
||||
idx,
|
||||
1,
|
||||
)
|
||||
|
||||
@@ -64,7 +64,7 @@ class UnitTransferList(QFrame):
|
||||
task_box_layout = QGridLayout()
|
||||
scroll_content.setLayout(task_box_layout)
|
||||
|
||||
units_column = sorted(cp.base.armor, key=lambda u: u.name)
|
||||
units_column = sorted(cp.base.armor, key=lambda u: u.variant_id)
|
||||
|
||||
count = 0
|
||||
for count, unit_type in enumerate(units_column):
|
||||
@@ -173,7 +173,7 @@ class ScrollingUnitTransferGrid(QFrame):
|
||||
unit_types = set(self.game_model.game.faction_for(player=True).ground_units)
|
||||
sorted_units = sorted(
|
||||
{u for u in unit_types if self.cp.base.total_units_of_type(u)},
|
||||
key=lambda u: u.name,
|
||||
key=lambda u: u.variant_id,
|
||||
)
|
||||
for row, unit_type in enumerate(sorted_units):
|
||||
self.add_unit_row(unit_type, task_box_layout, row)
|
||||
@@ -205,7 +205,7 @@ class ScrollingUnitTransferGrid(QFrame):
|
||||
|
||||
origin_inventory = self.cp.base.total_units_of_type(unit_type)
|
||||
|
||||
unit_name = QLabel(f"<b>{unit_type.name}</b>")
|
||||
unit_name = QLabel(f"<b>{unit_type.variant_id}</b>")
|
||||
unit_name.setSizePolicy(
|
||||
QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
)
|
||||
|
||||
@@ -44,7 +44,9 @@ class QAircraftRecruitmentMenu(UnitTransactionFrame[Squadron]):
|
||||
for squadron in cp.squadrons:
|
||||
unit_types.add(squadron.aircraft)
|
||||
|
||||
sorted_squadrons = sorted(cp.squadrons, key=lambda s: (s.aircraft.name, s.name))
|
||||
sorted_squadrons = sorted(
|
||||
cp.squadrons, key=lambda s: (s.aircraft.variant_id, s.name)
|
||||
)
|
||||
for row, squadron in enumerate(sorted_squadrons):
|
||||
self.add_purchase_row(squadron, task_box_layout, row)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class QArmorRecruitmentMenu(UnitTransactionFrame[GroundUnitType]):
|
||||
unit_types = list(
|
||||
set(self.game_model.game.faction_for(player=True).ground_units)
|
||||
)
|
||||
unit_types.sort(key=lambda u: u.name)
|
||||
unit_types.sort(key=lambda u: u.variant_id)
|
||||
for row, unit_type in enumerate(unit_types):
|
||||
self.add_purchase_row(unit_type, task_box_layout, row)
|
||||
stretch = QVBoxLayout()
|
||||
|
||||
@@ -32,7 +32,7 @@ class QIntelInfo(QFrame):
|
||||
).present.items():
|
||||
if count:
|
||||
task_type = unit_type.dcs_unit_type.task_default.name
|
||||
units_by_task[task_type][unit_type.name] += count
|
||||
units_by_task[task_type][unit_type.variant_id] += count
|
||||
|
||||
units_by_task = {
|
||||
task: units_by_task[task] for task in sorted(units_by_task.keys())
|
||||
@@ -41,7 +41,7 @@ class QIntelInfo(QFrame):
|
||||
front_line_units = defaultdict(int)
|
||||
for unit_type, count in self.cp.base.armor.items():
|
||||
if count:
|
||||
front_line_units[unit_type.name] += count
|
||||
front_line_units[unit_type.variant_id] += count
|
||||
|
||||
units_by_task["Front line units"] = front_line_units
|
||||
for task, unit_types in units_by_task.items():
|
||||
|
||||
@@ -76,7 +76,7 @@ class QTgoLayoutGroupRow(QWidget):
|
||||
# Add all possible units with the price
|
||||
for unit_type in force_group.unit_types_for_group(group):
|
||||
self.unit_selector.addItem(
|
||||
f"{unit_type.name} [${unit_type.price}M]",
|
||||
f"{unit_type.variant_id} [${unit_type.price}M]",
|
||||
userData=(unit_type.dcs_unit_type, unit_type.price),
|
||||
)
|
||||
# Add all possible statics with price = 0
|
||||
|
||||
@@ -88,11 +88,11 @@ class AircraftIntelLayout(IntelTableLayout):
|
||||
continue
|
||||
|
||||
self.add_header(f"{control_point.name} ({base_total})")
|
||||
for airframe in sorted(allocation.present, key=lambda k: k.name):
|
||||
for airframe in sorted(allocation.present, key=lambda k: k.variant_id):
|
||||
count = allocation.present[airframe]
|
||||
if not count:
|
||||
continue
|
||||
self.add_row(f" {airframe.name}", count)
|
||||
self.add_row(f" {airframe.variant_id}", count)
|
||||
self.add_row("")
|
||||
|
||||
self.add_row("<b>Total</b>", total)
|
||||
@@ -117,11 +117,11 @@ class ArmyIntelLayout(IntelTableLayout):
|
||||
continue
|
||||
|
||||
self.add_header(f"{control_point.name} ({base.total_armor})")
|
||||
for vehicle in sorted(base.armor, key=lambda k: k.name):
|
||||
for vehicle in sorted(base.armor, key=lambda k: k.variant_id):
|
||||
count = base.armor[vehicle]
|
||||
if not count:
|
||||
continue
|
||||
self.add_row(f" {vehicle.name}", count)
|
||||
self.add_row(f" {vehicle.variant_id}", count)
|
||||
self.add_row("")
|
||||
|
||||
self.add_row("<b>Total</b>", total)
|
||||
|
||||
Reference in New Issue
Block a user