[Options] Change some bad widget data names

This commit is contained in:
Azumgi 2018-09-05 17:35:07 +03:00
parent 51aa520df9
commit fcce983c9e
3 changed files with 91 additions and 94 deletions

View file

@ -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)

View file

@ -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

View file

@ -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")