Add support for shared settings

This commit is contained in:
Athozus 2023-12-17 22:31:17 +01:00
parent 3eafeb4cf8
commit a2d680eda8
No known key found for this signature in database
GPG key ID: B50895022E8484BF

View file

@ -393,24 +393,33 @@ function mail.extractMaillists(receivers_string, maillists_owner)
return receivers return receivers
end end
function mail.get_setting_default_value(setting_name) function mail.get_setting_default_value(key)
return mail.settings[setting_name].default return mail.settings[key].default
end end
function mail.get_setting(playername, setting_name) function mail.get_setting(playername, key)
local entry = mail.get_storage_entry(playername) local entry = mail.get_storage_entry(playername)
if entry.settings[setting_name] ~= nil then local value = mail.get_setting_default_value(key)
return entry.settings[setting_name] if entry.settings[key] ~= nil then
else value = entry.settings[key]
return mail.get_setting_default_value(setting_name)
end end
if mail.settings[key].sync then -- in case this setting is shared with another mod
value = mail.settings[key].sync(playername, key) -- get new value
mail.set_setting(playername, key, value, false) -- update the setting in mail storage and don't transfer it again
end
return value
end end
-- add or update a setting -- add or update a setting
function mail.set_setting(playername, key, value) function mail.set_setting(playername, key, value, not_transfer)
local entry = mail.get_storage_entry(playername) local entry = mail.get_storage_entry(playername)
entry.settings[key] = value entry.settings[key] = value
mail.set_storage_entry(playername, entry) mail.set_storage_entry(playername, entry)
if not not_transfer and mail.settings[key].transfer then -- in case this setting is shared with another mod
mail.settings[key].transfer(playername, key, value)
end
end end
function mail.reset_settings(playername) function mail.reset_settings(playername)