Mutators: cleaned up GUI and added localization
This commit is contained in:
parent
f2b3787866
commit
febbd6ebd7
3 changed files with 177 additions and 129 deletions
|
@ -191,7 +191,11 @@ return {
|
||||||
|
|
||||||
-- MUTATORS
|
-- MUTATORS
|
||||||
|
|
||||||
|
mutator_no_description_provided = {
|
||||||
|
en = "No description provided."
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Difficulties' names [V1]
|
||||||
easy = {
|
easy = {
|
||||||
en = "Easy"
|
en = "Easy"
|
||||||
},
|
},
|
||||||
|
@ -217,6 +221,7 @@ return {
|
||||||
en = "Heroic"
|
en = "Heroic"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Chat messages
|
||||||
broadcast_enabled_mutators = {
|
broadcast_enabled_mutators = {
|
||||||
en = "ENABLED MUTATORS"
|
en = "ENABLED MUTATORS"
|
||||||
},
|
},
|
||||||
|
@ -240,6 +245,7 @@ return {
|
||||||
en = "DUE TO CHANGE IN DIFFICULTY"
|
en = "DUE TO CHANGE IN DIFFICULTY"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Interface
|
||||||
mutators_title = {
|
mutators_title = {
|
||||||
en = "Mutators"
|
en = "Mutators"
|
||||||
},
|
},
|
||||||
|
@ -253,19 +259,38 @@ return {
|
||||||
en = "Subscribe to mods and mutators on the workshop"
|
en = "Subscribe to mods and mutators on the workshop"
|
||||||
},
|
},
|
||||||
|
|
||||||
tooltip_supported_difficulty = {
|
-- Mutator widgets' tooltips
|
||||||
en = "Supported difficulty levels"
|
tooltip_incompatible_mutators = {
|
||||||
|
en = "\n\n-- INCOMPATIBLE WITH MUTATORS --\n"
|
||||||
},
|
},
|
||||||
tooltip_incompatible_with_all = {
|
tooltip_compatible_mutators = {
|
||||||
en = "Incompatible with all other mutators"
|
en = "\n\n-- COMPATIBLE ONLY WITH MUTATORS --\n"
|
||||||
},
|
},
|
||||||
tooltip_incompatible_with = {
|
tooltip_compatible_with_all_mutators = {
|
||||||
en = "Incompatible with"
|
en = "\n\n-- COMPATIBLE WITH ALL MUTATORS --"
|
||||||
},
|
},
|
||||||
tooltip_compatible_with_all = {
|
tooltip_incompatible_with_all_mutators = {
|
||||||
en = "Compatible with all other mutators"
|
en = "\n\n-- INCOMPATIBLE WITH ALL MUTATORS --"
|
||||||
|
},
|
||||||
|
|
||||||
|
tooltip_incompatible_diffs = {
|
||||||
|
en = "\n\n-- INCOMPATIBLE WITH DIFFICULTIES --\n"
|
||||||
|
},
|
||||||
|
tooltip_compatible_diffs = {
|
||||||
|
en = "\n\n-- COMPATIBLE ONLY WITH DIFFICULTIES --\n"
|
||||||
|
},
|
||||||
|
tooltip_compatible_with_all_diffs = {
|
||||||
|
en = "\n\n-- COMPATIBLE WITH ALL DIFFICULTIES --"
|
||||||
|
},
|
||||||
|
|
||||||
|
tooltip_conflicts = {
|
||||||
|
en = "\n\n-- CONFLICTS --\n"
|
||||||
|
},
|
||||||
|
|
||||||
|
tooltip_append_mutator = {
|
||||||
|
en = " (mutator)"
|
||||||
|
},
|
||||||
|
tooltip_append_difficulty = {
|
||||||
|
en = " (difficulty)"
|
||||||
},
|
},
|
||||||
tooltip_will_be_disabled = {
|
|
||||||
en = "Will be disabled when Play is pressed"
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
local vmf = get_mod("VMF")
|
local vmf = get_mod("VMF")
|
||||||
|
|
||||||
|
|
||||||
local _MUTATORS = vmf.mutators
|
local _MUTATORS = vmf.mutators
|
||||||
|
|
||||||
local _SELECTED_DIFFICULTY_KEY
|
local _SELECTED_DIFFICULTY_KEY -- Currently selected difficulty in the map view.
|
||||||
|
|
||||||
local _DEFINITIONS = dofile("scripts/mods/vmf/modules/ui/mutators/mutators_gui_definitions")
|
local _DEFINITIONS = dofile("scripts/mods/vmf/modules/ui/mutators/mutators_gui_definitions")
|
||||||
local _UI_SCENEGRAPH
|
local _UI_SCENEGRAPH
|
||||||
|
@ -12,10 +11,9 @@ local _MUTATOR_LIST_WIDGETS = {}
|
||||||
local _PARTY_BUTTON_WIDGET
|
local _PARTY_BUTTON_WIDGET
|
||||||
local _OTHER_WIDGETS = {}
|
local _OTHER_WIDGETS = {}
|
||||||
|
|
||||||
|
|
||||||
local _ORIGINAL_VALUES = {} -- @TODO: get rid of it?
|
local _ORIGINAL_VALUES = {} -- @TODO: get rid of it?
|
||||||
|
|
||||||
local _MUTATOR_LIST_IS_VISIBLE
|
local _IS_MUTATOR_LIST_VISIBLE -- 'true' if Mutator view is active, 'false' if Party view is active.
|
||||||
local _CURRENT_PAGE_NUMBER
|
local _CURRENT_PAGE_NUMBER
|
||||||
local _TOTAL_PAGES_NUMBER
|
local _TOTAL_PAGES_NUMBER
|
||||||
|
|
||||||
|
@ -34,9 +32,10 @@ local function get_map_view()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Toggles mutator list (switches between Party and Mutators views).
|
||||||
local function show_mutator_list(map_view, is_visible)
|
local function show_mutator_list(map_view, is_visible)
|
||||||
|
|
||||||
_MUTATOR_LIST_IS_VISIBLE = is_visible
|
_IS_MUTATOR_LIST_VISIBLE = is_visible
|
||||||
|
|
||||||
if is_visible then
|
if is_visible then
|
||||||
|
|
||||||
|
@ -90,14 +89,14 @@ local function change_map_view_look(map_view, is_vmf_look)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--@TODO: clean up, and probably do direct change instead of return
|
-- Used in the next function to calculate tooltip offset, since Fatshark's solution doesn't support
|
||||||
|
-- tooltips with cursor being in the left-bottom corner.
|
||||||
local function calculate_tooltip_offset (widget_content, widget_style, ui_renderer)
|
local function calculate_tooltip_offset (widget_content, widget_style, ui_renderer)
|
||||||
|
|
||||||
--local cursor_offset_bottom = widget_style.cursor_offset_bottom
|
local input_service = ui_renderer.input_service
|
||||||
|
if input_service then
|
||||||
|
|
||||||
if ui_renderer.input_service then
|
local cursor_position = UIInverseScaleVectorToResolution(input_service:get("cursor"))
|
||||||
|
|
||||||
local cursor_position = UIInverseScaleVectorToResolution(ui_renderer.input_service.get(ui_renderer.input_service, "cursor"))
|
|
||||||
if cursor_position then
|
if cursor_position then
|
||||||
|
|
||||||
local text = widget_content.tooltip_text
|
local text = widget_content.tooltip_text
|
||||||
|
@ -115,27 +114,20 @@ local function calculate_tooltip_offset (widget_content, widget_style, ui_render
|
||||||
|
|
||||||
local tooltip_height = full_font_height * num_texts
|
local tooltip_height = full_font_height * num_texts
|
||||||
|
|
||||||
--if((cursor_offset_bottom[2] / UIResolutionScale() + tooltip_height) > cursor_position[2]) then
|
widget_style.cursor_offset[1] = widget_style.cursor_default_offset[1]
|
||||||
|
widget_style.cursor_offset[2] = widget_style.cursor_default_offset[2] - (tooltip_height * UIResolutionScale())
|
||||||
local cursor_offset_top = {}
|
end
|
||||||
cursor_offset_top[1] = widget_style.cursor_offset_top[1]
|
|
||||||
cursor_offset_top[2] = widget_style.cursor_offset_top[2] - (tooltip_height * UIResolutionScale())
|
|
||||||
|
|
||||||
return cursor_offset_top
|
|
||||||
--else
|
|
||||||
-- return cursor_offset_bottom
|
|
||||||
--end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--return cursor_offset_bottom
|
-- Callback function for mutator widgets. It's not defined in definitions file because it works with
|
||||||
end
|
-- mutators array and vmf.various_internal_functions.
|
||||||
|
|
||||||
local function offset_function_callback(ui_scenegraph_, style, content, ui_renderer)
|
local function offset_function_callback(ui_scenegraph_, style, content, ui_renderer)
|
||||||
|
|
||||||
local mutator = content.mutator
|
local mutator = content.mutator
|
||||||
|
|
||||||
|
|
||||||
|
-- Find out if mutator can be enabled.
|
||||||
local can_be_enabled = true
|
local can_be_enabled = true
|
||||||
|
|
||||||
local mutator_compatibility_config = mutator:get_config().compatibility
|
local mutator_compatibility_config = mutator:get_config().compatibility
|
||||||
|
@ -154,7 +146,7 @@ local function offset_function_callback(ui_scenegraph_, style, content, ui_rende
|
||||||
content.can_be_enabled = can_be_enabled
|
content.can_be_enabled = can_be_enabled
|
||||||
|
|
||||||
|
|
||||||
-- Enable/disable mutator
|
-- Enable/disable mutator.
|
||||||
if content.highlight_hotspot.on_release then
|
if content.highlight_hotspot.on_release then
|
||||||
if mutator:is_enabled() then
|
if mutator:is_enabled() then
|
||||||
vmf.set_mutator_state(mutator, false, false)
|
vmf.set_mutator_state(mutator, false, false)
|
||||||
|
@ -164,36 +156,41 @@ local function offset_function_callback(ui_scenegraph_, style, content, ui_rende
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Tooltip
|
-- Build tooltip (only for currently selected mutator widget).
|
||||||
-- Yup, a boilerplate code, kinda. I made it to divide tooltip code part, and to update it only for selected mod.
|
|
||||||
if content.highlight_hotspot.is_hover then
|
if content.highlight_hotspot.is_hover then
|
||||||
|
|
||||||
|
-- DESCRIPTION
|
||||||
|
|
||||||
local tooltip_text = content.description
|
local tooltip_text = content.description
|
||||||
|
|
||||||
|
-- MUTATORS COMPATIBILITY
|
||||||
|
|
||||||
local incompatible_mods = {}
|
local incompatible_mods = {}
|
||||||
local conflicting_mods = {}
|
|
||||||
|
|
||||||
if next(except) then
|
if next(except) then
|
||||||
tooltip_text = tooltip_text .. "\n\n" ..
|
tooltip_text = tooltip_text .. (is_mostly_compatible and vmf:localize("tooltip_incompatible_mutators") or
|
||||||
(is_mostly_compatible and "-- INCOMPATIBLE WITH [MUTATORS] --\n" or
|
vmf:localize("tooltip_compatible_mutators"))
|
||||||
"-- COMPATIBLE ONLY WITH [MUTATORS] --\n") --@TODO: localize
|
|
||||||
|
|
||||||
for other_mutator, _ in pairs(except) do
|
for other_mutator, _ in pairs(except) do
|
||||||
table.insert(incompatible_mods, " * " .. other_mutator:get_readable_name())
|
table.insert(incompatible_mods, " * " .. other_mutator:get_readable_name())
|
||||||
end
|
end
|
||||||
|
|
||||||
tooltip_text = tooltip_text .. table.concat(incompatible_mods, "\n")
|
tooltip_text = tooltip_text .. table.concat(incompatible_mods, "\n")
|
||||||
|
else
|
||||||
|
if is_mostly_compatible then
|
||||||
|
tooltip_text = tooltip_text .. vmf:localize("tooltip_compatible_with_all_mutators")
|
||||||
|
else
|
||||||
|
tooltip_text = tooltip_text .. vmf:localize("tooltip_incompatible_with_all_mutators")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- DIFFICULTIES COMPATIBILITY
|
||||||
|
|
||||||
local difficulties = {}
|
local difficulties = {}
|
||||||
local compatible_difficulties_number = mutator_compatibility_config.compatible_difficulties_number
|
local compatible_difficulties_number = mutator_compatibility_config.compatible_difficulties_number
|
||||||
if compatible_difficulties_number < 8 then
|
if compatible_difficulties_number < 8 then
|
||||||
tooltip_text = tooltip_text .. "\n\n" ..
|
tooltip_text = tooltip_text .. (compatible_difficulties_number > 4 and
|
||||||
(compatible_difficulties_number > 4 and "-- INCOMPATIBLE WITH [DIFFICULTIES] --\n" or
|
vmf:localize("tooltip_incompatible_diffs") or
|
||||||
"-- COMPATIBLE ONLY WITH [DIFFICULTIES] --\n") --@TODO: localize
|
vmf:localize("tooltip_compatible_diffs"))
|
||||||
|
|
||||||
for difficulty_key, is_compatible in pairs(mutator_compatibility_config.compatible_difficulties) do
|
for difficulty_key, is_compatible in pairs(mutator_compatibility_config.compatible_difficulties) do
|
||||||
if compatible_difficulties_number > 4 and not is_compatible
|
if compatible_difficulties_number > 4 and not is_compatible
|
||||||
|
@ -203,40 +200,45 @@ local function offset_function_callback(ui_scenegraph_, style, content, ui_rende
|
||||||
end
|
end
|
||||||
|
|
||||||
tooltip_text = tooltip_text .. table.concat(difficulties, "\n")
|
tooltip_text = tooltip_text .. table.concat(difficulties, "\n")
|
||||||
|
else
|
||||||
|
tooltip_text = tooltip_text .. vmf:localize("tooltip_compatible_with_all_diffs")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- CONFLICTS
|
||||||
|
|
||||||
|
if not can_be_enabled then
|
||||||
|
tooltip_text = tooltip_text .. vmf:localize("tooltip_conflicts")
|
||||||
|
|
||||||
|
local conflicting_mods = {}
|
||||||
for _, other_mutator in ipairs(_MUTATORS) do
|
for _, other_mutator in ipairs(_MUTATORS) do
|
||||||
if other_mutator:is_enabled() and other_mutator ~= mutator then
|
if other_mutator:is_enabled() and other_mutator ~= mutator then
|
||||||
if not (is_mostly_compatible and not except[other_mutator] or
|
if not (is_mostly_compatible and not except[other_mutator] or
|
||||||
not is_mostly_compatible and except[other_mutator]) then
|
not is_mostly_compatible and except[other_mutator]) then
|
||||||
table.insert(conflicting_mods, " * " .. other_mutator:get_readable_name() .. " (mutator)")
|
|
||||||
|
table.insert(conflicting_mods, " * " .. other_mutator:get_readable_name() ..
|
||||||
|
vmf:localize("tooltip_append_mutator"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not can_be_enabled then
|
|
||||||
--tooltip_text = tooltip_text .. "\n\n" .. "--[X]-- CONFLICTS --[X]--\n"
|
|
||||||
tooltip_text = tooltip_text .. "\n\n" .. "-- CONFLICTS --\n"
|
|
||||||
if #conflicting_mods > 0 then
|
if #conflicting_mods > 0 then
|
||||||
tooltip_text = tooltip_text .. table.concat(conflicting_mods, "\n") .. "\n"
|
tooltip_text = tooltip_text .. table.concat(conflicting_mods, "\n") .. "\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
if not mutator_compatibility_config.compatible_difficulties[_SELECTED_DIFFICULTY_KEY] then
|
if not mutator_compatibility_config.compatible_difficulties[_SELECTED_DIFFICULTY_KEY] then
|
||||||
tooltip_text = tooltip_text .. " * " .. vmf:localize(_SELECTED_DIFFICULTY_KEY) .. " (difficulty)" .. "\n"
|
tooltip_text = tooltip_text .. " * " .. vmf:localize(_SELECTED_DIFFICULTY_KEY) ..
|
||||||
|
vmf:localize("tooltip_append_difficulty")
|
||||||
end
|
end
|
||||||
--tooltip_text = tooltip_text .. "--[X]--\n"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Applying tooltip
|
||||||
|
|
||||||
content.tooltip_text = tooltip_text
|
content.tooltip_text = tooltip_text
|
||||||
|
calculate_tooltip_offset(content, style.tooltip_text, ui_renderer)
|
||||||
style.tooltip_text.cursor_offset = calculate_tooltip_offset(content, style.tooltip_text, ui_renderer)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- VISUAL
|
|
||||||
|
|
||||||
|
-- Visual changing (text color and checkboxes).
|
||||||
local is_enabled = content.mutator:is_enabled()
|
local is_enabled = content.mutator:is_enabled()
|
||||||
|
|
||||||
style.text.text_color = content.can_be_enabled and (is_enabled and content.text_color_enabled or
|
style.text.text_color = content.can_be_enabled and (is_enabled and content.text_color_enabled or
|
||||||
|
@ -288,7 +290,7 @@ local function draw(map_view, dt)
|
||||||
-- Party button
|
-- Party button
|
||||||
UIRenderer.draw_widget(ui_renderer, _PARTY_BUTTON_WIDGET)
|
UIRenderer.draw_widget(ui_renderer, _PARTY_BUTTON_WIDGET)
|
||||||
|
|
||||||
if _MUTATOR_LIST_IS_VISIBLE then
|
if _IS_MUTATOR_LIST_VISIBLE then
|
||||||
|
|
||||||
-- Mutator list (render only 8 (or less) currently visible mutator widgets)
|
-- Mutator list (render only 8 (or less) currently visible mutator widgets)
|
||||||
for i = ((_CURRENT_PAGE_NUMBER - 1) * 8 + 1), (_CURRENT_PAGE_NUMBER * 8) do
|
for i = ((_CURRENT_PAGE_NUMBER - 1) * 8 + 1), (_CURRENT_PAGE_NUMBER * 8) do
|
||||||
|
@ -308,6 +310,7 @@ local function draw(map_view, dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Reads mousewheel scrolls from corresponding widget and changes current page number, if possible.
|
||||||
local function update_mousewheel_scroll_area_input()
|
local function update_mousewheel_scroll_area_input()
|
||||||
local widget_content = _OTHER_WIDGETS.mousewheel_scroll_area.content
|
local widget_content = _OTHER_WIDGETS.mousewheel_scroll_area.content
|
||||||
local mouse_scroll_value = widget_content.scroll_value
|
local mouse_scroll_value = widget_content.scroll_value
|
||||||
|
@ -363,14 +366,7 @@ end)
|
||||||
-- ##### VMF internal functions and variables #########################################################################
|
-- ##### VMF internal functions and variables #########################################################################
|
||||||
-- ####################################################################################################################
|
-- ####################################################################################################################
|
||||||
|
|
||||||
function vmf.reset_map_view()
|
-- Changes map_view VMF way
|
||||||
local map_view = get_map_view()
|
|
||||||
if map_view then
|
|
||||||
change_map_view_look(map_view, false)
|
|
||||||
show_mutator_list(map_view, false)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function vmf.modify_map_view()
|
function vmf.modify_map_view()
|
||||||
local map_view = get_map_view()
|
local map_view = get_map_view()
|
||||||
if map_view then
|
if map_view then
|
||||||
|
@ -378,6 +374,11 @@ function vmf.modify_map_view()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- ####################################################################################################################
|
-- Restores map_view to its defaults
|
||||||
-- ##### Script #######################################################################################################
|
function vmf.reset_map_view()
|
||||||
-- ####################################################################################################################
|
local map_view = get_map_view()
|
||||||
|
if map_view then
|
||||||
|
change_map_view_look(map_view, false)
|
||||||
|
show_mutator_list(map_view, false)
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,51 +1,72 @@
|
||||||
|
local vmf = get_mod("VMF")
|
||||||
|
|
||||||
|
|
||||||
local scenegraph_definition = {
|
local scenegraph_definition = {
|
||||||
|
|
||||||
sg_root = {
|
sg_root = {
|
||||||
is_root = true,
|
|
||||||
size = {1920, 1080},
|
size = {1920, 1080},
|
||||||
position = {0, 0, UILayer.default}
|
position = {0, 0, UILayer.default},
|
||||||
|
|
||||||
|
is_root = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- fix for fullhd windowed (not fullscreen) mode (if everything else will inherit from sg_root, its children will
|
||||||
|
-- stick to the window border instead of the black gap)
|
||||||
|
sg_placeholder = {
|
||||||
|
size = {1920, 1080},
|
||||||
|
position = {0, 0, 1},
|
||||||
|
|
||||||
|
parent = "sg_root",
|
||||||
|
|
||||||
|
horizontal_alignment = "center",
|
||||||
|
vertical_alignment = "center"
|
||||||
},
|
},
|
||||||
|
|
||||||
sg_mutators_list_background = {
|
sg_mutators_list_background = {
|
||||||
vertical_alignment = "bottom",
|
|
||||||
parent = "sg_root",
|
|
||||||
horizontal_alignment = "left",
|
|
||||||
size = {547, 313},
|
size = {547, 313},
|
||||||
position = {-2, -2, 10} -- @TODO: fix the actual image
|
position = {-2, -2, 2}, -- @TODO: fix the actual image (-2 px plus image overlaping text)
|
||||||
|
|
||||||
|
parent = "sg_placeholder",
|
||||||
|
|
||||||
|
horizontal_alignment = "left",
|
||||||
|
vertical_alignment = "bottom"
|
||||||
},
|
},
|
||||||
|
|
||||||
sg_mutators_button = {
|
sg_mutators_button = {
|
||||||
vertical_alignment = "bottom",
|
|
||||||
parent = "sg_root",
|
|
||||||
horizontal_alignment = "left",
|
|
||||||
size = {64, 64},
|
size = {64, 64},
|
||||||
position = {87, 430.5, 10}
|
position = {87, 430.5, 2},
|
||||||
|
|
||||||
|
parent = "sg_placeholder",
|
||||||
|
|
||||||
|
horizontal_alignment = "left",
|
||||||
|
vertical_alignment = "bottom"
|
||||||
},
|
},
|
||||||
|
|
||||||
sg_mutators_list = {
|
sg_mutators_list = {
|
||||||
vertical_alignment = "bottom",
|
|
||||||
horizontal_alignment = "left",
|
|
||||||
|
|
||||||
size = {370, 265},
|
size = {370, 265},
|
||||||
position = {80, 61, 11}, --122
|
position = {80, 61, 3},
|
||||||
|
|
||||||
parent = "sg_root"
|
parent = "sg_placeholder",
|
||||||
|
|
||||||
|
vertical_alignment = "bottom",
|
||||||
|
horizontal_alignment = "left"
|
||||||
},
|
},
|
||||||
|
|
||||||
sg_mutators_list_start = {
|
sg_mutators_list_start = {
|
||||||
vertical_alignment = "top",
|
|
||||||
horizontal_alignment = "left",
|
|
||||||
|
|
||||||
size = {1, 1},
|
size = {1, 1},
|
||||||
offset = {0, 0, 1},
|
offset = {0, 0, 3},
|
||||||
|
|
||||||
parent = "sg_mutators_list"
|
parent = "sg_mutators_list",
|
||||||
},
|
|
||||||
|
vertical_alignment = "top",
|
||||||
|
horizontal_alignment = "left"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
local widgets_definition = {
|
local widgets_definition = {
|
||||||
|
|
||||||
|
-- That photoshopped background texture which expands displayed list area
|
||||||
mutator_list_background = {
|
mutator_list_background = {
|
||||||
scenegraph_id = "sg_root",
|
scenegraph_id = "sg_root",
|
||||||
element = {
|
element = {
|
||||||
|
@ -67,7 +88,6 @@ local widgets_definition = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
mutators_list_debug = {
|
mutators_list_debug = {
|
||||||
scenegraph_id = "sg_mutators_list",
|
scenegraph_id = "sg_mutators_list",
|
||||||
element = {
|
element = {
|
||||||
|
@ -86,8 +106,9 @@ local widgets_definition = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
-- Widgets that detects mousewheel scrolls inside itself
|
||||||
mousewheel_scroll_area = {
|
mousewheel_scroll_area = {
|
||||||
scenegraph_id = "sg_mutators_list",
|
scenegraph_id = "sg_mutators_list",
|
||||||
element = {
|
element = {
|
||||||
|
@ -104,10 +125,10 @@ local widgets_definition = {
|
||||||
scroll_value = 0
|
scroll_value = 0
|
||||||
},
|
},
|
||||||
style = {}
|
style = {}
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- The 4th button, which will toggle old "Party" view (which is replaced by "Mutators" view)
|
||||||
local party_button_widget_defenition = UIWidgets.create_octagon_button(
|
local party_button_widget_defenition = UIWidgets.create_octagon_button(
|
||||||
{
|
{
|
||||||
"map_view_party_button",
|
"map_view_party_button",
|
||||||
|
@ -120,7 +141,7 @@ local party_button_widget_defenition = UIWidgets.create_octagon_button(
|
||||||
"sg_mutators_button"
|
"sg_mutators_button"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
-- Creates a widget for every mutator (that string with checkbox)
|
||||||
local function create_mutator_widget(mutator, offset_function_callback)
|
local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
return {
|
return {
|
||||||
scenegraph_id = "sg_mutators_list_start",
|
scenegraph_id = "sg_mutators_list_start",
|
||||||
|
@ -139,10 +160,12 @@ local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
{
|
{
|
||||||
pass_type = "local_offset",
|
pass_type = "local_offset",
|
||||||
|
|
||||||
|
-- The function is executed inside of 'mutators_gui.lua', since it has to interact with mutator list a lot
|
||||||
offset_function = offset_function_callback
|
offset_function = offset_function_callback
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pass_type = "texture",
|
pass_type = "texture",
|
||||||
|
|
||||||
style_id = "hover_texture",
|
style_id = "hover_texture",
|
||||||
texture_id = "hover_texture",
|
texture_id = "hover_texture",
|
||||||
content_check_function = function (content)
|
content_check_function = function (content)
|
||||||
|
@ -157,6 +180,7 @@ local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pass_type = "texture",
|
pass_type = "texture",
|
||||||
|
|
||||||
style_id = "checkbox_style",
|
style_id = "checkbox_style",
|
||||||
texture_id = "checkbox_texture"
|
texture_id = "checkbox_texture"
|
||||||
},
|
},
|
||||||
|
@ -175,22 +199,21 @@ local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
mutator = nil, -- is added after creation (i can't add mutator here now, becuase UIWidget.init() clones tables)
|
mutator = nil, -- is added after creation (i can't add mutator here now, becuase UIWidget.init() clones tables)
|
||||||
|
|
||||||
text = mutator:get_readable_name(),
|
text = mutator:get_readable_name(),
|
||||||
|
description = mutator:get_description() or vmf:localize("mutator_no_description_provided"),
|
||||||
description = mutator:get_description() or "No description provided.", --@TODO: localize
|
|
||||||
|
|
||||||
can_be_enabled = false,
|
can_be_enabled = false,
|
||||||
|
|
||||||
mutators_list_background_texture_id = "map_view_mutators_area",
|
|
||||||
highlight_hotspot = {},
|
highlight_hotspot = {},
|
||||||
|
|
||||||
tooltip_text = "",
|
tooltip_text = "", -- is always being changed in local_offset pass
|
||||||
--hover_texture = "map_setting_bg_fade",
|
|
||||||
hover_texture = "playerlist_hover",
|
hover_texture = "playerlist_hover",
|
||||||
|
|
||||||
checkbox_texture = "checkbox_unchecked",
|
checkbox_texture = "checkbox_unchecked", -- is always being changed in local_offset pass
|
||||||
|
|
||||||
checkbox_unchecked_texture = "checkbox_unchecked", -- unsused
|
-- Presets
|
||||||
checkbox_checked_texture = "checkbox_checked", -- unsused
|
checkbox_unchecked_texture = "checkbox_unchecked",
|
||||||
|
checkbox_checked_texture = "checkbox_checked",
|
||||||
|
|
||||||
text_color_disabled = Colors.get_color_table_with_alpha("white", 255),
|
text_color_disabled = Colors.get_color_table_with_alpha("white", 255),
|
||||||
text_color_enabled = Colors.get_color_table_with_alpha("cheeseburger", 255),
|
text_color_enabled = Colors.get_color_table_with_alpha("cheeseburger", 255),
|
||||||
|
@ -209,7 +232,7 @@ local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
font_size = 24,
|
font_size = 24,
|
||||||
font_type = "hell_shark",
|
font_type = "hell_shark",
|
||||||
dynamic_font = true,
|
dynamic_font = true,
|
||||||
text_color = Colors.get_color_table_with_alpha("white", 255)
|
text_color = Colors.get_color_table_with_alpha("white", 255) -- is always being changed in local_offset pass
|
||||||
},
|
},
|
||||||
|
|
||||||
hover_texture = {
|
hover_texture = {
|
||||||
|
@ -230,9 +253,8 @@ local function create_mutator_widget(mutator, offset_function_callback)
|
||||||
vertical_alignment = "top",
|
vertical_alignment = "top",
|
||||||
cursor_side = "right",
|
cursor_side = "right",
|
||||||
max_width = 425,
|
max_width = 425,
|
||||||
cursor_offset = {27, 27},
|
cursor_offset = {0, 0}, -- is always being changed in local_offset pass
|
||||||
cursor_offset_bottom = {27, 27},
|
cursor_default_offset = {27, -27}
|
||||||
cursor_offset_top = {27, -27}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
size = {370, 32},
|
size = {370, 32},
|
||||||
|
|
Loading…
Add table
Reference in a new issue