Settings = { classname = "FNSettings", } local settings_list = {} local element_list = {} function Settings.init() settings_list["need-show"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["show-hidden-recipes"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["show-disable-recipes"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["show-hidden-items"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["show-hidden-fluids"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["show-disable-techs"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["fnei-line-count"] = { type = "numeric-up-down", tab = "main-settings", def_val = 10, min_val = 5, max_val = 12 } settings_list["detail-chance"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["focus-search"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["close-gui-when-tech-open"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["show-craft-time-label"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["show-the-same-recipes"] = { type = "checkbox", tab = "main-settings", def_val = false } settings_list["show-hotbar"] = { type = "checkbox", tab = "main-settings", def_val = true, event = Controller.get_cont("hotbar").change_hotbar_visibility } settings_list["show-temperature-of-fluids"] = { type = "checkbox", tab = "main-settings", def_val = true } settings_list["hotbar-last-line-num"] = { type = "numeric-up-down", tab = "main-settings", def_val = 3, min_val = 0, max_val = 20, event = Controller.get_cont("hotbar").change_hotbar_visibility } settings_list["hotbar-fav-line-num"] = { type = "numeric-up-down", tab = "main-settings", def_val = 5, min_val = 0, max_val = 20, event = Controller.get_cont("hotbar").change_hotbar_visibility } settings_list["show-recipes"] = { type = "crafting-buildings", tab = "crafting-category", def_val = true } settings_list["item-auto-craft"] = { type = "checkbox", tab = "default-settings", def_val = false } settings_list["item-auto-usage"] = { type = "checkbox", tab = "default-settings", def_val = false } settings_list["fluid-auto-craft"] = { type = "checkbox", tab = "default-settings", def_val = false } settings_list["fluid-auto-usage"] = { type = "checkbox", tab = "default-settings", def_val = false } settings_list["show-extended-hotbar"] = { type = "checkbox", tab = "default-settings", def_val = false } element_list["checkbox"] = require "scripts/settings/elements/checkbox" element_list["global-checkbox"] = require "scripts/settings/elements/global_checkbox" element_list["crafting-buildings"] = require "scripts/settings/elements/crafting_buildings" element_list["drop-down"] = require "scripts/settings/elements/drop_down" element_list["numeric-up-down"] = require "scripts/settings/elements/numeric_up_down" element_list["global-numeric-up-down"] = require "scripts/settings/elements/global_numeric_up_down" for name, sett in pairs(settings_list) do sett.elem = element_list[sett.type] sett.name = name end end function Settings.get_sett_list() return settings_list end function Settings.get_val(sett_name, arg1, arg2) local sett = sett_name and settings_list[sett_name] if sett then return sett.elem.get_val(sett, arg1, arg2) else Debug:error("Error in fanction Settings.get_val: sett_name ", sett_name, " not found") end end function Settings.set_val(sett_name, val) local sett = sett_name and settings_list[sett_name] if sett then settings_list[sett_name].elem.set_val(settings_list[sett_name], val) end end function Settings.get_global_sett() local pl_global = Player.get_global() if not pl_global.settings then pl_global.settings = {} end return pl_global.settings end function Settings.init_events() for name,sett in pairs(settings_list) do element_list[sett.type].event_init(sett) end end