Add class Settings
This commit is contained in:
parent
6ca6034186
commit
c2392a687c
1 changed files with 38 additions and 0 deletions
38
cf-lib/settings/Settings.lua
Normal file
38
cf-lib/settings/Settings.lua
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
--- Utility class for manipulating settings
|
||||
--- @class Settings
|
||||
local Settings = {}
|
||||
|
||||
local settingTypes = { "bool-setting", "int-setting", "double-setting", "string-setting", "color-setting" }
|
||||
|
||||
local function getSetting(name)
|
||||
for _, settingType in pairs(settingTypes) do
|
||||
local setting = data.raw[settingType][name]
|
||||
if setting then return setting end
|
||||
end
|
||||
error("getSetting: Setting with name '" .. name .. "' not found.")
|
||||
end
|
||||
|
||||
Settings.getSetting = getSetting
|
||||
|
||||
function Settings.force(name, value)
|
||||
local setting = getSetting(name)
|
||||
setting.hidden = true
|
||||
if setting.type == "bool-setting" or setting.type == "color-setting" then
|
||||
setting.forced_value = value
|
||||
else
|
||||
setting.allowed_values = { value }
|
||||
end
|
||||
end
|
||||
|
||||
function Settings.default(name, value)
|
||||
local setting = getSetting(name)
|
||||
setting.default_value = value
|
||||
end
|
||||
|
||||
function Settings.forceDefault(name)
|
||||
local setting = getSetting(name)
|
||||
local value = setting.default_value
|
||||
Settings.force(name, value)
|
||||
end
|
||||
|
||||
return Settings
|
||||
Loading…
Add table
Add a link
Reference in a new issue