diff --git a/cf-lib/settings/Settings.lua b/cf-lib/settings/Settings.lua new file mode 100644 index 0000000..582292b --- /dev/null +++ b/cf-lib/settings/Settings.lua @@ -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 \ No newline at end of file