mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-03 19:28:25 +02:00
AbstractModSettings.get now return an AbstractModSettings object instead of a dictionary of AbstractModSettings
This commit is contained in:
parent
6d5dae63af
commit
95f3943b02
2 changed files with 13 additions and 18 deletions
|
@ -91,13 +91,14 @@ class ModConfig:
|
||||||
self.macros = macros if macros is not None else {}
|
self.macros = macros if macros is not None else {}
|
||||||
self.messages = messages if messages is not None else {}
|
self.messages = messages if messages is not None else {}
|
||||||
|
|
||||||
self.global_settings = AbstractModSettings.get(merge_dict(
|
self.global_settings = {name: AbstractModSettings.get(data) for name, data in merge_dict(
|
||||||
default_global_settings, global_settings,
|
# Avoid modder to add their own settings to globals one
|
||||||
dict_keys=default_global_settings.keys() # Avoid modder to add their own settings to globals one
|
default_global_settings, global_settings, dict_keys=default_global_settings.keys()
|
||||||
))
|
).items()}
|
||||||
self.specific_settings = AbstractModSettings.get(
|
|
||||||
|
self.specific_settings = {name: AbstractModSettings.get(data) for name, data in (
|
||||||
specific_settings if specific_settings is not None else {}
|
specific_settings if specific_settings is not None else {}
|
||||||
)
|
).items()}
|
||||||
|
|
||||||
self.name = name
|
self.name = name
|
||||||
self.nickname = nickname if nickname is not None else name
|
self.nickname = nickname if nickname is not None else name
|
||||||
|
|
|
@ -48,21 +48,15 @@ class AbstractModSettings(ABC):
|
||||||
...
|
...
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get(cls, settings_dict: dict) -> dict[str, "AbstractModSettings"]:
|
def get(cls, settings_data: dict) -> "AbstractModSettings":
|
||||||
"""
|
"""
|
||||||
Load all the settings in mod_settings_dict
|
Load all the settings in mod_settings_dict
|
||||||
:param settings_dict: dictionary containing all the settings defined for the mod
|
:param settings_data: dictionary containing all the settings defined for the mod
|
||||||
"""
|
"""
|
||||||
settings: dict[str, AbstractModSettings] = {}
|
|
||||||
|
|
||||||
for settings_name, settings_data in settings_dict.items():
|
|
||||||
for subclass in filter(lambda subclass: subclass.type == settings_data["type"], cls.__subclasses__()):
|
for subclass in filter(lambda subclass: subclass.type == settings_data["type"], cls.__subclasses__()):
|
||||||
settings_data.pop("type")
|
settings_data.pop("type")
|
||||||
settings[settings_name] = subclass(**settings_data)
|
return subclass(**settings_data)
|
||||||
break
|
else: raise InvalidSettingsType(settings_data["type"])
|
||||||
else: raise InvalidSettingsType(settings_name)
|
|
||||||
|
|
||||||
return settings
|
|
||||||
|
|
||||||
|
|
||||||
# these import load the different ModSettings, and so get_mod_settings will be able to fetch them with __subclasses__
|
# these import load the different ModSettings, and so get_mod_settings will be able to fetch them with __subclasses__
|
||||||
|
|
Loading…
Reference in a new issue