diff --git a/vmf/scripts/mods/vmf/modules/core/settings.lua b/vmf/scripts/mods/vmf/modules/core/settings.lua index 0c3428b..a1f1fc1 100644 --- a/vmf/scripts/mods/vmf/modules/core/settings.lua +++ b/vmf/scripts/mods/vmf/modules/core/settings.lua @@ -1,8 +1,8 @@ --[[ - This is the settings manager. - * It operates settings within the mod namespace (you can define settings with the same name for different mods) + Settings manager. + * Operates settings within the mod namespace (you can define settings with the same name for different mods) * Settings location: "%AppData%\Roaming\Fatshark\Warhammer End Times Vermintide\user_settings.config" - * All settings are being saved to the settings-file when game state changes, when options menu is closed and on reload + * All settings are saved to the settings-file when game state changes, when options menu is closed, and on reload --]] local vmf = get_mod("VMF") @@ -10,33 +10,30 @@ local _mods_settings = Application.user_setting("mods_settings") or {} local _there_are_unsaved_changes = false --- #################################################################################################################### --- ##### Local functions ############################################################################################## --- #################################################################################################################### +-- ##################################################################################################################### +-- ##### Local functions ############################################################################################### +-- ##################################################################################################################### local function save_all_settings() - if _there_are_unsaved_changes then Application.set_user_setting("mods_settings", _mods_settings) Application.save_user_settings() - _there_are_unsaved_changes = false end end --- #################################################################################################################### --- ##### VMFMod ####################################################################################################### --- #################################################################################################################### +-- ##################################################################################################################### +-- ##### VMFMod ######################################################################################################## +-- ##################################################################################################################### --[[ - * setting_name [string] : setting name, can contain any characters lua-string can - * setting_value [anything]: setting value, will be serialized to SJSON format, so you can save whole tables - - * call_setting_changed_event [bool]: - if 'true', when some setting will be changed, 'setting_changed' event will be called (if mod defined one) + Sets mod's setting to a given value. If setting is used in some option widget, make sure given + value matches one of the predefined values in this widget. + * setting_name [string] : setting name (can contain any characters lua-string can) + * setting_value [anything]: setting value (can be any SJSON serializable format) + * notify_mod [bool] : if 'true', calls 'mod.on_setting_changed' event --]] -VMFMod.set = function (self, setting_name, setting_value, call_setting_changed_event) - +function VMFMod:set(setting_name, setting_value, notify_mod) local mod_name = self:get_name() if not _mods_settings[mod_name] then @@ -44,40 +41,33 @@ VMFMod.set = function (self, setting_name, setting_value, call_setting_changed_e end local mod_settings = _mods_settings[mod_name] - mod_settings[setting_name] = type(setting_value) == "table" and table.clone(setting_value) or setting_value _there_are_unsaved_changes = true - if call_setting_changed_event then + if notify_mod then vmf.mod_setting_changed_event(self, setting_name) end end + --[[ - * setting_name [string]: setting name, can contain any characters lua-string can + Returns a mod's setting. Don't call this method for table settings very frequently, because tables are cloned on every + call. + * setting_name [string]: setting name (can contain any characters lua-string can) --]] -VMFMod.get = function (self, setting_name) - +function VMFMod:get(setting_name) local mod_name = self:get_name() - local mod_settings = _mods_settings[mod_name] - - local setting_value - - if mod_settings then - setting_value = mod_settings[setting_name] - else - return nil - end + local setting_value = mod_settings and mod_settings[setting_name] return type(setting_value) == "table" and table.clone(setting_value) or setting_value end --- #################################################################################################################### --- ##### VMF internal functions and variables ######################################################################### --- #################################################################################################################### +-- ##################################################################################################################### +-- ##### VMF internal functions and variables ########################################################################## +-- ##################################################################################################################### -vmf.save_unsaved_settings_to_file = function() +function vmf.save_unsaved_settings_to_file() save_all_settings() end \ No newline at end of file