diff --git a/vmf/scripts/mods/vmf/modules/core/options.lua b/vmf/scripts/mods/vmf/modules/core/options.lua index 8542dbc..e7e33eb 100644 --- a/vmf/scripts/mods/vmf/modules/core/options.lua +++ b/vmf/scripts/mods/vmf/modules/core/options.lua @@ -1,9 +1,6 @@ local vmf = get_mod("VMF") --- @TODO: rename stupid original field names --- @TODO: rename to options_widget_data and probably add mod instead of mod name. Meaning adding mod data after --- widget initialization? -vmf.options_widgets_definition = {} +vmf.options_widgets_data = {} -- ##################################################################################################################### -- ##### Local functions ############################################################################################### @@ -32,7 +29,7 @@ local function validate_dropdown_data(mod, data) -- default value - something? -- options - table - -- options.text - string + -- options.title - string -- options.value - something + some of them is default value -- options.show_widgets - table @@ -54,11 +51,11 @@ end local function localize_generic_widget_data(mod, data) if data.localize then - data.text = mod:localize(data.text or data.setting_name) + data.title = mod:localize(data.title or data.setting_id) if data.tooltip then data.tooltip = mod:localize(data.tooltip) else - data.tooltip = vmf.quick_localize(mod, data.setting_name .. "_description") + data.tooltip = vmf.quick_localize(mod, data.setting_id .. "_description") end end end @@ -83,15 +80,15 @@ end local function initialize_header_data(mod, data) local new_data = {} - new_data.widget_index = data.widget_index - new_data.mod_name = mod:get_name() - new_data.readable_mod_name = mod:get_readable_name() - new_data.tooltip = mod:get_description() - new_data.is_mod_toggable = mod:get_internal_data("is_togglable") and not mod:get_internal_data("is_mutator") - new_data.is_widget_collapsed = vmf:get("options_menu_collapsed_mods")[mod:get_name()] - new_data.is_favorited = vmf:get("options_menu_favorite_mods")[mod:get_name()] + new_data.index = data.index + new_data.mod_name = mod:get_name() + new_data.readable_mod_name = mod:get_readable_name() + new_data.tooltip = mod:get_description() + new_data.is_togglable = mod:get_internal_data("is_togglable") and not mod:get_internal_data("is_mutator") + new_data.is_collapsed = vmf:get("options_menu_collapsed_mods")[mod:get_name()] + new_data.is_favorited = vmf:get("options_menu_favorite_mods")[mod:get_name()] - new_data.widget_type = data.type + new_data.type = data.type return new_data end @@ -101,17 +98,17 @@ local function initialize_generic_widget_data(mod, data, localize) local new_data = {} -- Automatically generated values - new_data.widget_index = data.widget_index - new_data.parent_widget_number = data.parent_widget_index - new_data.widget_level = data.depth - new_data.mod_name = mod:get_name() + new_data.index = data.index + new_data.parent_index = data.parent_index + new_data.depth = data.depth + new_data.mod_name = mod:get_name() -- Defined in widget - new_data.widget_type = data.type - new_data.setting_name = data.setting_id - new_data.text = data.title -- optional, if (localize == true) - new_data.tooltip = data.tooltip -- optional - new_data.default_value = data.default_value + new_data.type = data.type + new_data.setting_id = data.setting_id + new_data.title = data.title -- optional, if (localize == true) + new_data.tooltip = data.tooltip -- optional + new_data.default_value = data.default_value -- Overwrite global optons localization setting if widget defined it if data.localize == nil then @@ -130,7 +127,7 @@ end local function initialize_group_data(mod, data, localize, collapsed_widgets) local new_data = initialize_generic_widget_data(mod, data, localize) - new_data.is_widget_collapsed = collapsed_widgets[data.setting_id] + new_data.is_collapsed = collapsed_widgets[data.setting_id] return new_data end @@ -139,7 +136,7 @@ end local function initialize_checkbox_data(mod, data, localize, collapsed_widgets) local new_data = initialize_generic_widget_data(mod, data, localize) - new_data.is_widget_collapsed = collapsed_widgets[data.setting_id] + new_data.is_collapsed = collapsed_widgets[data.setting_id] validate_checkbox_data(mod, new_data) @@ -150,8 +147,8 @@ end local function initialize_dropdown_data(mod, data, localize, collapsed_widgets) local new_data = initialize_generic_widget_data(mod, data, localize) - new_data.is_widget_collapsed = collapsed_widgets[data.setting_id] - new_data.options = data.options + new_data.is_collapsed = collapsed_widgets[data.setting_id] + new_data.options = data.options validate_dropdown_data(mod, new_data) localize_dropdown_data(mod, new_data) @@ -165,7 +162,7 @@ local function initialize_dropdown_data(mod, data, localize, collapsed_widgets) local new_show_widgets = {} for j, sub_widget_index in ipairs(option.show_widgets) do if data.sub_widgets[sub_widget_index] then - new_show_widgets[data.sub_widgets[sub_widget_index].widget_index] = true + new_show_widgets[data.sub_widgets[sub_widget_index].index] = true else error(string.format("'widget \"%s\" (dropdown) -> options -> [%d] -> show_widgets -> [%d] \"%s\"' points" .. " to non-existing sub_widget", data.setting_id, i, j, sub_widget_index)) @@ -186,7 +183,7 @@ local function initialize_keybind_data(mod, data, localize) new_data.keybind_global = data.keybind_global new_data.keybind_trigger = data.keybind_trigger new_data.keybind_type = data.keybind_type - new_data.action = data.action_name + new_data.action_name = data.action_name new_data.view_name = data.view_name validate_keybind_data(mod, new_data) @@ -231,14 +228,14 @@ end ----------- -- unfold nested table? -local function unfold_table(unfolded_table, unfoldable_table, parent_widget_index, depth) +local function unfold_table(unfolded_table, unfoldable_table, parent_index, depth) for i = 1, #unfoldable_table do local nested_table = unfoldable_table[i] if type(nested_table) == "table" then table.insert(unfolded_table, nested_table) nested_table.depth = depth - nested_table.widget_index = #unfolded_table - nested_table.parent_widget_index = parent_widget_index + nested_table.index = #unfolded_table + nested_table.parent_index = parent_index local nested_table_sub_widgets = nested_table.sub_widgets if nested_table_sub_widgets then if type(nested_table_sub_widgets) == "table" then @@ -253,8 +250,7 @@ local function unfold_table(unfolded_table, unfoldable_table, parent_widget_inde else vmf:dump(unfolded_table, "widgets", 1) error(string.format("sub_widget#%d of widget [%d] is not a table, it's %s. " .. - "See dumped table in game log for reference.", i, parent_widget_index, - type(nested_table)), 0) + "See dumped table in game log for reference.", i, parent_index, type(nested_table)), 0) end end return unfolded_table @@ -279,15 +275,15 @@ local function initialize_mod_options_widgets_data(mod, widgets_data, localize) -- Also, initialize keybinds for i = 2, #initialized_data do local data = initialized_data[i] - if mod:get(data.setting_name) == nil then - mod:set(data.setting_name, data.default_value) + if mod:get(data.setting_id) == nil then + mod:set(data.setting_id, data.default_value) end - if data.widget_type == "keybind" then - mod:keybind(data.setting_name, data.action, mod:get(data.setting_name)) + if data.type == "keybind" then + mod:keybind(data.setting_id, data.action_name, mod:get(data.setting_id)) end end - table.insert(vmf.options_widgets_definition, initialized_data) + table.insert(vmf.options_widgets_data, initialized_data) -- @DEBUG: mod:dump(unfolded_raw_widgets_data, "unfolded_raw_widgets_data", 1) diff --git a/vmf/scripts/mods/vmf/modules/legacy/options.lua b/vmf/scripts/mods/vmf/modules/legacy/options.lua index 6f8145c..9ebe98c 100644 --- a/vmf/scripts/mods/vmf/modules/legacy/options.lua +++ b/vmf/scripts/mods/vmf/modules/legacy/options.lua @@ -21,15 +21,15 @@ vmf.initialize_mod_options_legacy = function (mod, widgets_definition) new_widget_definition = {} - new_widget_definition.widget_type = "header" - new_widget_definition.widget_index = new_widget_index - new_widget_definition.mod_name = mod:get_name() - new_widget_definition.readable_mod_name = mod:get_readable_name() - new_widget_definition.tooltip = mod:get_description() - new_widget_definition.default = true - new_widget_definition.is_mod_toggable = mod:get_internal_data("is_togglable") and + new_widget_definition.type = "header" + new_widget_definition.index = new_widget_index + new_widget_definition.mod_name = mod:get_name() + new_widget_definition.readable_mod_name = mod:get_readable_name() + new_widget_definition.tooltip = mod:get_description() + new_widget_definition.default = true + new_widget_definition.is_togglable = mod:get_internal_data("is_togglable") and not mod:get_internal_data("is_mutator") - new_widget_definition.is_widget_collapsed = vmf:get("options_menu_collapsed_mods")[mod:get_name()] + new_widget_definition.is_collapsed = vmf:get("options_menu_collapsed_mods")[mod:get_name()] if options_menu_favorite_mods then @@ -68,12 +68,12 @@ vmf.initialize_mod_options_legacy = function (mod, widgets_definition) new_widget_definition = {} - new_widget_definition.widget_type = current_widget.widget_type -- all - new_widget_definition.widget_index = new_widget_index -- all [gen] - new_widget_definition.widget_level = level -- all [gen] + new_widget_definition.type = current_widget.widget_type -- all + new_widget_definition.index = new_widget_index -- all [gen] + new_widget_definition.depth = level -- all [gen] new_widget_definition.mod_name = mod:get_name() -- all [gen] - new_widget_definition.setting_name = current_widget.setting_name -- all - new_widget_definition.text = current_widget.text -- all + new_widget_definition.setting_id = current_widget.setting_name -- all + new_widget_definition.title = current_widget.text -- all new_widget_definition.tooltip = current_widget.tooltip and (current_widget.text .. "\n" .. current_widget.tooltip) -- all [optional] new_widget_definition.unit_text = current_widget.unit_text -- numeric [optional] @@ -81,12 +81,12 @@ vmf.initialize_mod_options_legacy = function (mod, widgets_definition) new_widget_definition.decimals_number = current_widget.decimals_number -- numeric [optional] new_widget_definition.options = current_widget.options -- dropdown new_widget_definition.default_value = current_widget.default_value -- all - new_widget_definition.action = current_widget.action -- keybind [optional?] + new_widget_definition.action_name = current_widget.action -- keybind [optional?] new_widget_definition.show_widget_condition = current_widget.show_widget_condition -- all - new_widget_definition.parent_widget_number = parent_number -- all [gen] + new_widget_definition.parent_index = parent_number -- all [gen] if mod_collapsed_widgets then - new_widget_definition.is_widget_collapsed = mod_collapsed_widgets[current_widget.setting_name] + new_widget_definition.is_collapsed = mod_collapsed_widgets[current_widget.setting_name] end if type(mod:get(current_widget.setting_name)) == "nil" then @@ -151,5 +151,5 @@ vmf.initialize_mod_options_legacy = function (mod, widgets_definition) end end - table.insert(vmf.options_widgets_definition, mod_settings_list_widgets_definitions) + table.insert(vmf.options_widgets_data, mod_settings_list_widgets_definitions) end \ No newline at end of file diff --git a/vmf/scripts/mods/vmf/modules/ui/options/vmf_options_view.lua b/vmf/scripts/mods/vmf/modules/ui/options/vmf_options_view.lua index 026336a..9de43d6 100644 --- a/vmf/scripts/mods/vmf/modules/ui/options/vmf_options_view.lua +++ b/vmf/scripts/mods/vmf/modules/ui/options/vmf_options_view.lua @@ -1017,7 +1017,7 @@ local function create_header_widget(widget_definition, scenegraph_id) is_checkbox_checked = true, is_checkbox_visible = false, is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, is_favorited = widget_definition.is_favorited, rect_masked_texture = "rect_masked", @@ -1037,7 +1037,7 @@ local function create_header_widget(widget_definition, scenegraph_id) tooltip_text = widget_definition.tooltip, mod_name = widget_definition.mod_name, - widget_type = widget_definition.widget_type + widget_type = widget_definition.type }, style = { @@ -1322,7 +1322,7 @@ local function create_checkbox_widget(widget_definition, scenegraph_id) content = { is_checkbox_checked = false, is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, rect_masked_texture = "rect_masked", highlight_texture = "playerlist_hover", @@ -1330,14 +1330,14 @@ local function create_checkbox_widget(widget_definition, scenegraph_id) checkbox_hotspot = {}, highlight_hotspot = {}, - text = widget_definition.text, + text = widget_definition.title, tooltip_text = widget_definition.tooltip, mod_name = widget_definition.mod_name, - setting_name = widget_definition.setting_name, - widget_type = widget_definition.widget_type, + setting_name = widget_definition.setting_id, + widget_type = widget_definition.type, default_value = widget_definition.default_value, - parent_widget_number = widget_definition.parent_widget_number, + parent_widget_number = widget_definition.parent_index, show_widget_condition = show_widget_condition }, style = { @@ -1356,7 +1356,7 @@ local function create_checkbox_widget(widget_definition, scenegraph_id) }, text = { - offset = {60 + widget_definition.widget_level * 40, offset_y + 5, 3}, + offset = {60 + widget_definition.depth * 40, offset_y + 5, 3}, font_size = 28, font_type = "hell_shark_masked", dynamic_font = true, @@ -1537,20 +1537,21 @@ local function create_group_widget(widget_definition, scenegraph_id) }, content = { is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, highlight_texture = "playerlist_hover", rect_masked_texture = "rect_masked", highlight_hotspot = {}, - text = widget_definition.text, + text = widget_definition.title, tooltip_text = widget_definition.tooltip, + mod_name = widget_definition.mod_name, - setting_name = widget_definition.setting_name, - widget_type = widget_definition.widget_type, - parent_widget_number = widget_definition.parent_widget_number, + setting_name = widget_definition.setting_id, + widget_type = widget_definition.type, + parent_widget_number = widget_definition.parent_index, show_widget_condition = show_widget_condition }, style = { @@ -1569,7 +1570,7 @@ local function create_group_widget(widget_definition, scenegraph_id) }, text = { - offset = {60 + widget_definition.widget_level * 40, offset_y + 5, 2}, + offset = {60 + widget_definition.depth * 40, offset_y + 5, 2}, font_size = 28, font_type = "hell_shark_masked", dynamic_font = true, @@ -1897,7 +1898,7 @@ local function create_dropdown_widget(widget_definition, scenegraph_id, scenegra }, content = { is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, highlight_texture = "playerlist_hover", rect_masked_texture = "rect_masked", @@ -1906,12 +1907,12 @@ local function create_dropdown_widget(widget_definition, scenegraph_id, scenegra highlight_hotspot = {}, dropdown_hotspot = {}, - text = widget_definition.text, + text = widget_definition.title, tooltip_text = widget_definition.tooltip, mod_name = widget_definition.mod_name, - setting_name = widget_definition.setting_name, - widget_type = widget_definition.widget_type, + setting_name = widget_definition.setting_id, + widget_type = widget_definition.type, options_texts = options_texts, options_values = options_values, @@ -1921,7 +1922,7 @@ local function create_dropdown_widget(widget_definition, scenegraph_id, scenegra current_option_text = options_texts[1], current_shown_widgets = nil, -- if nil, all subwidgets are shown default_value = widget_definition.default_value, - parent_widget_number = widget_definition.parent_widget_number, + parent_widget_number = widget_definition.parent_index, show_widget_condition = show_widget_condition }, style = { @@ -1941,7 +1942,7 @@ local function create_dropdown_widget(widget_definition, scenegraph_id, scenegra }, text = { - offset = {60 + widget_definition.widget_level * 40, offset_y + 5, 3}, + offset = {60 + widget_definition.depth * 40, offset_y + 5, 3}, font_size = 28, font_type = "hell_shark_masked", dynamic_font = true, @@ -2350,7 +2351,7 @@ local function create_numeric_widget(widget_definition, scenegraph_id, scenegrap }, content = { is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, highlight_texture = "playerlist_hover", rect_masked_texture = "rect_masked", @@ -2358,7 +2359,7 @@ local function create_numeric_widget(widget_definition, scenegraph_id, scenegrap highlight_hotspot = {}, dropdown_hotspot = {}, - text = widget_definition.text, + text = widget_definition.title, tooltip_text = widget_definition.tooltip, unit_text = widget_definition.unit_text, decimals_number = widget_definition.decimals_number, @@ -2368,12 +2369,12 @@ local function create_numeric_widget(widget_definition, scenegraph_id, scenegrap right_bracket = "]", mod_name = widget_definition.mod_name, - setting_name = widget_definition.setting_name, - widget_type = widget_definition.widget_type, + setting_name = widget_definition.setting_id, + widget_type = widget_definition.type, current_value_text = "whatever", default_value = widget_definition.default_value, - parent_widget_number = widget_definition.parent_widget_number, + parent_widget_number = widget_definition.parent_index, show_widget_condition = show_widget_condition }, style = { @@ -2392,7 +2393,7 @@ local function create_numeric_widget(widget_definition, scenegraph_id, scenegrap }, text = { - offset = {60 + widget_definition.widget_level * 40, offset_y + 5, 3}, + offset = {60 + widget_definition.depth * 40, offset_y + 5, 3}, font_size = 28, font_type = "hell_shark_masked", dynamic_font = true, @@ -2637,7 +2638,7 @@ local function create_keybind_widget(widget_definition, scenegraph_id) }, content = { is_widget_visible = true, - is_widget_collapsed = widget_definition.is_widget_collapsed, + is_widget_collapsed = widget_definition.is_collapsed, highlight_texture = "playerlist_hover", -- texture name background_texture = "common_widgets_background_lit", @@ -2646,17 +2647,17 @@ local function create_keybind_widget(widget_definition, scenegraph_id) highlight_hotspot = {}, keybind_text_hotspot = {}, - text = widget_definition.text, + text = widget_definition.title, tooltip_text = widget_definition.tooltip, mod_name = widget_definition.mod_name, - setting_name = widget_definition.setting_name, - widget_type = widget_definition.widget_type, + setting_name = widget_definition.setting_id, + widget_type = widget_definition.type, - action = widget_definition.action, + action = widget_definition.action_name, keybind_text = widget_definition.keybind_text, default_value = widget_definition.default_value, - parent_widget_number = widget_definition.parent_widget_number, + parent_widget_number = widget_definition.parent_index, show_widget_condition = show_widget_condition }, style = { @@ -2675,7 +2676,7 @@ local function create_keybind_widget(widget_definition, scenegraph_id) }, text = { - offset = {60 + widget_definition.widget_level * 40, offset_y + 5, 2}, + offset = {60 + widget_definition.depth * 40, offset_y + 5, 2}, font_size = 28, font_type = "hell_shark_masked", dynamic_font = true, @@ -2788,7 +2789,7 @@ VMFOptionsView.init = function (self, ingame_ui_context) self.definitions.scenegraph = scenegraph_definition self.definitions.scenegraph_2nd_layer = {} self.definitions.menu_widgets = menu_widgets_definition - self.definitions.settings_list_widgets = vmf.options_widgets_definition + self.definitions.settings_list_widgets = vmf.options_widgets_data -- get necessary things for the rendering self.ui_renderer = ingame_ui_context.ui_renderer @@ -2864,7 +2865,7 @@ VMFOptionsView.initialize_settings_list_widgets = function (self) for _, definition in ipairs(mod_settings_list_definitions) do local widget = nil - local widget_type = definition.widget_type + local widget_type = definition.type if widget_type == "checkbox" then widget = self:initialize_checkbox_widget(definition, scenegraph_id_start) @@ -2950,8 +2951,8 @@ VMFOptionsView.initialize_header_widget = function (self, definition, scenegraph local widget = create_header_widget(definition, scenegraph_id) local content = widget.content - content.is_checkbox_checked = definition.is_mod_toggable - content.is_checkbox_visible = definition.is_mod_toggable + content.is_checkbox_checked = definition.is_togglable + content.is_checkbox_visible = definition.is_togglable content.callback_favorite = callback(self, "callback_favorite") content.callback_move_favorite = callback(self, "callback_move_favorite")