From 6ca603418608debc341767efdb6eb56bc6d6a708 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Nov 2025 00:31:56 +0100 Subject: [PATCH 1/2] Add table.filterKey --- cf-lib/util/table.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cf-lib/util/table.lua b/cf-lib/util/table.lua index 865d683..57c7fa2 100644 --- a/cf-lib/util/table.lua +++ b/cf-lib/util/table.lua @@ -70,6 +70,18 @@ function table.filter(target, predicate) return result end +--- Filters a table by removing given key. +--- @param target table The table to filter +--- @param key string The key to remove +function table.filterKey(target, key) + return table.filter( + target, + function(_, currentKey) + return currentKey ~= key + end + ) +end + --- Concatenates two tables into a new table. --- @param table1 table The first table --- @param table2 table The second table From 6937a3c8287235e3bfd82f607c1f2480831a08e9 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Nov 2025 00:32:17 +0100 Subject: [PATCH 2/2] Add class Settings --- cf-lib/settings/Settings.lua | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 cf-lib/settings/Settings.lua diff --git a/cf-lib/settings/Settings.lua b/cf-lib/settings/Settings.lua new file mode 100644 index 0000000..9f76538 --- /dev/null +++ b/cf-lib/settings/Settings.lua @@ -0,0 +1,32 @@ +--- 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 + +return Settings \ No newline at end of file