From f9663b63edba143cee16063241519af43c26c643 Mon Sep 17 00:00:00 2001 From: scgm0 <2682963017@qq.com> Date: Thu, 18 Apr 2024 12:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dami-ModOptions/mods_config_interface.gd | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/dami-ModOptions/mods_config_interface.gd b/dami-ModOptions/mods_config_interface.gd index fd6d151..dc35c51 100644 --- a/dami-ModOptions/mods_config_interface.gd +++ b/dami-ModOptions/mods_config_interface.gd @@ -7,6 +7,7 @@ signal setting_changed(setting_name, value, mod_name) const LOG_NAME = "dami-ModOptions" var mod_configs := {} +var override_configs := {} var color_regex := RegEx.new() const COLOR_HEX_EXPRESSION = "#?([a-fA-F0-9]{2}){3,4}" @@ -22,6 +23,19 @@ func _ready(): load_legacy_config(mod) else: mod_configs[mod.dir_name] = flatten_properties(mod.manifest.config_schema.properties) + load_override_config(mod) + +func load_override_config(mod:ModData) -> void: + if !mod.configs.empty() and mod.configs.has("default"): + var current_config = mod_configs[mod.dir_name] + var override_config = mod.configs.override if mod.configs.has("override") else ModLoaderConfig.create_config(mod.dir_name, "override", mod.configs.default.data) + + for key in current_config: + var value = override_config.data.get(key) + if value != null and value != current_config[key]: + printerr(key) + on_setting_changed(key, value, mod.dir_name) + override_configs[mod.dir_name] = override_config func load_legacy_config(mod:ModData) -> void: var manifest_path = mod.get_required_mod_file_path(mod.required_mod_files.MANIFEST) @@ -41,11 +55,14 @@ func on_setting_changed(setting_name:String, value, mod_name:String): var current_config = mod_configs[mod_name] current_config[setting_name] = value + if override_configs.has(mod_name): + var override_config = override_configs[mod_name] + override_config.data[setting_name] = value + ModLoaderConfig.update_config(override_config) # TODO, something with this # for mod in ModLoader.mod_load_order: # if mod is ModData and mod.dir_name == mod_name: # mod.config = current_config - emit_signal("setting_changed", setting_name, value, mod_name) func flatten_properties(properties:Dictionary) -> Dictionary: