mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
@@ -5,7 +5,7 @@ import logging
|
||||
import textwrap
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import List, Optional, TYPE_CHECKING
|
||||
from typing import List, Optional, TYPE_CHECKING, Any
|
||||
|
||||
from game.settings import Settings
|
||||
|
||||
@@ -32,9 +32,9 @@ class LuaPluginWorkOrder:
|
||||
|
||||
|
||||
class PluginSettings:
|
||||
def __init__(self, identifier: str, enabled_by_default: bool) -> None:
|
||||
def __init__(self, identifier: str, value: Any) -> None:
|
||||
self.identifier = identifier
|
||||
self.enabled_by_default = enabled_by_default
|
||||
self.value = value
|
||||
self.settings = Settings()
|
||||
self.initialize_settings()
|
||||
|
||||
@@ -46,20 +46,26 @@ class PluginSettings:
|
||||
# Plugin options are saved in the game's Settings, but it's possible for
|
||||
# plugins to change across loads. If new plugins are added or new
|
||||
# options added to those plugins, initialize the new settings.
|
||||
self.settings.initialize_plugin_option(self.identifier, self.enabled_by_default)
|
||||
self.settings.initialize_plugin_option(self.identifier, self.value)
|
||||
|
||||
@property
|
||||
def enabled(self) -> bool:
|
||||
def get_value(self) -> Any:
|
||||
return self.settings.plugin_option(self.identifier)
|
||||
|
||||
def set_enabled(self, enabled: bool) -> None:
|
||||
self.settings.set_plugin_option(self.identifier, enabled)
|
||||
def set_value(self, value: Any) -> None:
|
||||
self.settings.set_plugin_option(self.identifier, value)
|
||||
|
||||
|
||||
class LuaPluginOption(PluginSettings):
|
||||
def __init__(self, identifier: str, name: str, enabled_by_default: bool) -> None:
|
||||
super().__init__(identifier, enabled_by_default)
|
||||
def __init__(
|
||||
self, identifier: str, name: str, min: Any, max: Any, value: Any
|
||||
) -> None:
|
||||
super().__init__(identifier, value)
|
||||
self.name = name
|
||||
if type(value) == int or type(value) == float:
|
||||
self.min, self.max = min, max
|
||||
else:
|
||||
self.min, self.max = None, None
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -83,7 +89,9 @@ class LuaPluginDefinition:
|
||||
LuaPluginOption(
|
||||
identifier=f"{name}.{option_id}",
|
||||
name=option.get("nameInUI", name),
|
||||
enabled_by_default=option.get("defaultValue"),
|
||||
min=option.get("minimumValue", 0),
|
||||
max=option.get("maximumValue", 10000),
|
||||
value=option.get("defaultValue"),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -123,6 +131,7 @@ class LuaPlugin(PluginSettings):
|
||||
def __init__(self, definition: LuaPluginDefinition) -> None:
|
||||
self.definition = definition
|
||||
super().__init__(self.definition.identifier, self.definition.enabled_by_default)
|
||||
self.enabled = self.definition.enabled_by_default
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
@@ -146,6 +155,10 @@ class LuaPlugin(PluginSettings):
|
||||
|
||||
return cls(definition)
|
||||
|
||||
def set_enabled(self, enabled: bool) -> None:
|
||||
self.set_value(enabled)
|
||||
self.enabled = enabled
|
||||
|
||||
def set_settings(self, settings: Settings) -> None:
|
||||
super().set_settings(settings)
|
||||
for option in self.definition.options:
|
||||
@@ -160,9 +173,9 @@ class LuaPlugin(PluginSettings):
|
||||
if self.options:
|
||||
option_decls = []
|
||||
for option in self.options:
|
||||
enabled = str(option.enabled).lower()
|
||||
value = str(option.value).lower()
|
||||
name = option.identifier
|
||||
option_decls.append(f" dcsRetribution.plugins.{name} = {enabled}")
|
||||
option_decls.append(f" dcsRetribution.plugins.{name} = {value}")
|
||||
|
||||
joined_options = "\n".join(option_decls)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user