81 lines
2.4 KiB
Lua

local category_list = require('categories').list
local data_utils = require('data_utils')
local setting_formats = require('defines.setting_name_formats')
local ordering_table = data_utils.create_ordering_table_for_settings()
local settings = {}
-- Startup settings
settings[#settings + 1] = {
name = setting_formats.modpack_compatibility_enabled,
type = 'bool-setting',
setting_type = 'startup',
order = 'a-a',
default_value = true,
}
settings[#settings + 1] = {
name = setting_formats.infinite_research_enabled,
type = 'bool-setting',
setting_type = 'startup',
order = 'a-b',
default_value = true,
}
for index, category in ipairs(category_list) do
settings[#settings + 1] = {
name = setting_formats.research_enabled:format(category.name),
type = 'bool-setting',
setting_type = 'startup',
order = 'b-' .. ordering_table[index],
default_value = true,
}
end
settings[#settings + 1] = {
name = setting_formats.custom_config,
type = 'string-setting',
setting_type = 'startup',
order = 'c-a',
default_value = '',
allow_blank = true,
}
-- Runtime settings
for index, category in ipairs(category_list) do
settings[#settings + 1] = {
name = setting_formats.flat_bonus:format(category.name),
type = category.type .. '-setting',
setting_type = 'runtime-global',
order = ordering_table[index * 3 - 2] .. '-a',
default_value = 0,
minimum_value = 0,
maximum_value = 99999,
}
end
for index, category in ipairs(category_list) do
settings[#settings + 1] = {
name = setting_formats.multiplier:format(category.name),
type = 'double-setting',
setting_type = 'runtime-global',
order = ordering_table[index * 3 - 1] .. '-b',
default_value = 1,
minimum_value = 0,
maximum_value = 999,
}
end
for index, category in ipairs(category_list) do
local effect_index = 1
for _, effect_toggle in pairs(category.effect_settings or {}) do
settings[#settings + 1] = {
name = setting_formats.effect_flag:format(category.name, effect_toggle),
type = 'bool-setting',
setting_type = 'runtime-global',
order = ('%s-c-%s'):format(ordering_table[index * 3], ordering_table[effect_index]),
default_value = true,
}
effect_index = effect_index + 1
end
end
if #settings > 0 then
data:extend(settings)
end