mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Fix unculled zones not updating when needed.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1034.
This commit is contained in:
@@ -222,6 +222,7 @@ class AtoModel(QAbstractListModel):
|
||||
PackageRole = Qt.UserRole
|
||||
|
||||
client_slots_changed = Signal()
|
||||
packages_changed = Signal()
|
||||
|
||||
def __init__(self, game_model: GameModel, ato: AirTaskingOrder) -> None:
|
||||
super().__init__()
|
||||
@@ -254,6 +255,7 @@ class AtoModel(QAbstractListModel):
|
||||
self.endInsertRows()
|
||||
# noinspection PyUnresolvedReferences
|
||||
self.client_slots_changed.emit()
|
||||
self.on_packages_changed()
|
||||
|
||||
def delete_package_at_index(self, index: QModelIndex) -> None:
|
||||
"""Removes the package at the given index from the ATO."""
|
||||
@@ -272,6 +274,12 @@ class AtoModel(QAbstractListModel):
|
||||
self.endRemoveRows()
|
||||
# noinspection PyUnresolvedReferences
|
||||
self.client_slots_changed.emit()
|
||||
self.on_packages_changed()
|
||||
|
||||
def on_packages_changed(self) -> None:
|
||||
if self.game is not None:
|
||||
self.game.compute_unculled_zones()
|
||||
self.packages_changed.emit()
|
||||
|
||||
def package_at_index(self, index: QModelIndex) -> Package:
|
||||
"""Returns the package at the given index."""
|
||||
|
||||
@@ -106,6 +106,12 @@ class MapModel(QObject):
|
||||
GameUpdateSignal.get_instance().flight_selection_changed.connect(
|
||||
self.set_flight_selection
|
||||
)
|
||||
self.game_model.ato_model_for(True).packages_changed.connect(
|
||||
self.on_package_change
|
||||
),
|
||||
self.game_model.ato_model_for(False).packages_changed.connect(
|
||||
self.on_package_change
|
||||
),
|
||||
sim_controller.sim_update.connect(self.on_sim_update)
|
||||
self.reset()
|
||||
|
||||
@@ -374,6 +380,9 @@ class MapModel(QObject):
|
||||
def mapZones(self) -> NavMeshJs:
|
||||
return self._map_zones
|
||||
|
||||
def on_package_change(self) -> None:
|
||||
self.reset_unculled_zones()
|
||||
|
||||
def reset_unculled_zones(self) -> None:
|
||||
self._unculled_zones = list(UnculledZone.each_from_game(self.game))
|
||||
self.unculledZonesChanged.emit()
|
||||
|
||||
@@ -169,6 +169,8 @@ class AutoSettingsLayout(QGridLayout):
|
||||
) -> None:
|
||||
def on_changed(value: int) -> None:
|
||||
self.settings.__dict__[name] = value
|
||||
if description.causes_expensive_game_update:
|
||||
self.write_full_settings()
|
||||
|
||||
spinner = QSpinBox()
|
||||
spinner.setMinimum(description.min)
|
||||
@@ -354,7 +356,7 @@ class QSettingsWindow(QDialog):
|
||||
self.cheat_options.show_base_capture_cheat
|
||||
)
|
||||
|
||||
self.game.compute_conflicts_position()
|
||||
self.game.compute_unculled_zones()
|
||||
GameUpdateSignal.get_instance().updateGame(self.game)
|
||||
|
||||
def onSelectionChanged(self):
|
||||
|
||||
Reference in New Issue
Block a user