Ability to configure forced-options via a file

https://github.com/dcs-retribution/dcs-retribution/issues/490
This commit is contained in:
Raffson 2025-04-12 18:31:01 +02:00
parent de1f8a7abc
commit f8b4c7bcf5
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
3 changed files with 17 additions and 1 deletions

View File

@ -57,6 +57,7 @@
* **[Modding]** Support for Cowboy's E-7A Wedgetail mod (Supports EW Script Offensive Jamming)
* **[Modding]** Support for szcz's MiG-31BM (v2.0)
* **[Plugins]** Added initial AI support for EW Script 2.0
* **[Options]** Ability to configure certain forced-options via a file (WIP: https://github.com/dcs-retribution/dcs-retribution/issues/490).
## Fixes
* **[UI/UX]** A-10A flights can be edited again

View File

@ -1,10 +1,13 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Any
import dcs.lua
from dcs.forcedoptions import ForcedOptions
from dcs.mission import Mission
from game.persistency import forced_options_path
if TYPE_CHECKING:
from game.game import Game
@ -53,7 +56,15 @@ class ForcedOptionsGenerator:
value = self.game.settings.supercarrier_deck_crew
self.mission.forced_options.supercarrier_deck_crew = value
@staticmethod
def load_forced_options() -> dict[str, Any]:
with open(forced_options_path(), "r+", encoding="utf-8") as f:
content = f.read()
result = dcs.lua.loads(content).get("forcedOptions", {})
return result
def generate(self) -> None:
self.mission.forced_options.load_from_dict(self.load_forced_options())
self._set_options_view()
self._set_external_views()
self._set_easy_communication()

View File

@ -195,6 +195,10 @@ def settings_dir() -> Path:
return _create_dir_if_needed(base_path() / "Retribution" / "Settings")
def forced_options_path() -> Path:
return _create_dir_if_needed(base_path() / "Retribution" / "forced_options.lua")
def airwing_dir() -> Path:
return _create_dir_if_needed(base_path() / "Retribution" / "AirWing")