mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-03 19:28:25 +02:00
26 lines
1,009 B
Python
26 lines
1,009 B
Python
from source.mkw.ModSettings.TypeSettings import AbstractTypeSettings
|
|
|
|
|
|
class InvalidSettingsType(Exception):
|
|
def __init__(self, settings_type: str):
|
|
super().__init__(f"Error : Type of mod settings '{settings_type}' not found.")
|
|
|
|
|
|
class ModSettings:
|
|
def __new__(cls, settings_dict: dict) -> dict[str, AbstractTypeSettings]:
|
|
"""
|
|
Load all the settings in mod_settings_dict
|
|
:param settings_dict: dictionnary containing all the settings defined for the mod
|
|
"""
|
|
settings: dict[str, AbstractTypeSettings] = {}
|
|
|
|
for settings_name, settings_data in settings_dict.items():
|
|
for subclass in filter(
|
|
lambda subclass: subclass.type == settings_data["type"], AbstractTypeSettings.__subclasses__()
|
|
):
|
|
settings_data.pop("type")
|
|
settings[settings_name] = subclass(**settings_data)
|
|
break
|
|
else: raise InvalidSettingsType(settings_name)
|
|
|
|
return settings
|