mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Default settings support (#428)
This commit is contained in:
@@ -12,26 +12,29 @@ class NewGameSettings(QtWidgets.QWizardPage):
|
||||
super().__init__(parent)
|
||||
|
||||
self.setTitle("Campaign options")
|
||||
self.setSubTitle("\nAll other options unrelated to campaign generation.")
|
||||
self.setSubTitle(
|
||||
"\nAll other options unrelated to campaign generation. Defaults can be changed by overwriting Default.zip"
|
||||
)
|
||||
self.setPixmap(
|
||||
QtWidgets.QWizard.WizardPixmap.LogoPixmap,
|
||||
QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
|
||||
)
|
||||
|
||||
settings = Settings()
|
||||
settings.__setstate__(campaign.settings)
|
||||
self.settings_widget = QSettingsWidget(settings)
|
||||
self.settings_widget.load_default_settings()
|
||||
settings.__dict__.update(Settings.deserialize_state_dict(campaign.settings))
|
||||
settings.player_income_multiplier = (
|
||||
campaign.recommended_player_income_multiplier
|
||||
)
|
||||
settings.enemy_income_multiplier = campaign.recommended_enemy_income_multiplier
|
||||
settings.__dict__.update(campaign.settings)
|
||||
self.settings_widget = QSettingsWidget(settings)
|
||||
self.settings_widget.update_from_settings()
|
||||
self.setLayout(self.settings_widget.layout)
|
||||
|
||||
def set_campaign_values(self, c: Campaign):
|
||||
sw = self.settings_widget
|
||||
sw.settings.__setstate__(c.settings)
|
||||
sw.load_default_settings()
|
||||
sw.settings.__dict__.update(Settings.deserialize_state_dict(c.settings))
|
||||
sw.settings.player_income_multiplier = c.recommended_player_income_multiplier
|
||||
sw.settings.enemy_income_multiplier = c.recommended_enemy_income_multiplier
|
||||
sw.settings.__dict__.update(c.settings)
|
||||
sw.update_from_settings()
|
||||
|
||||
@@ -572,3 +572,33 @@ class QSettingsWidget(QtWidgets.QWizardPage, SettingsContainer):
|
||||
),
|
||||
zipfile.ZIP_DEFLATED,
|
||||
)
|
||||
|
||||
def load_default_settings(self):
|
||||
sd = settings_dir()
|
||||
default_zip_path = sd / "Default.zip"
|
||||
if default_zip_path.exists():
|
||||
with zipfile.ZipFile(default_zip_path, "r") as zf:
|
||||
filename = "Default.json"
|
||||
if filename in zf.namelist():
|
||||
settings_data = json.loads(
|
||||
zf.read(filename).decode("utf-8"),
|
||||
object_hook=self.settings.obj_hook,
|
||||
)
|
||||
self.settings.__setstate__(settings_data)
|
||||
else:
|
||||
if self.settings is None:
|
||||
default_settings = Settings()
|
||||
else:
|
||||
default_settings = self.settings
|
||||
with zipfile.ZipFile(default_zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
|
||||
filename = "Default.json"
|
||||
zf.writestr(
|
||||
filename,
|
||||
json.dumps(
|
||||
default_settings.__dict__,
|
||||
indent=2,
|
||||
default=default_settings.default_json,
|
||||
),
|
||||
zipfile.ZIP_DEFLATED,
|
||||
)
|
||||
self.settings.__setstate__(default_settings.__dict__)
|
||||
|
||||
Reference in New Issue
Block a user