Migrate to Splash Damage v2.0 by RotorOps

Partial fix #64
This commit is contained in:
Raffson
2023-03-04 23:01:39 +01:00
parent 17f8830fbf
commit 6713ee155c
12 changed files with 615 additions and 453 deletions

View File

@@ -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)