112 lines
3.5 KiB
Lua
112 lines
3.5 KiB
Lua
local WARNING_COLORS = {
|
|
{208, 104, 107, 255},
|
|
{250, 75, 139, 255},
|
|
{250, 151, 75, 255},
|
|
{246, 233, 44, 255},
|
|
{252, 200, 149, 255}
|
|
}
|
|
|
|
local GENERAL_WARNING_COLOR = {208, 138, 0, 255}
|
|
|
|
function refresh_search()
|
|
local search_text = document.search_textbox.text
|
|
local search_key = document.search_key_checkbox.checked
|
|
|
|
local panel = document.bindings_panel
|
|
local bindings = input.get_bindings()
|
|
panel:clear()
|
|
|
|
table.sort(bindings, function(a, b) return a > b end)
|
|
if search_text ~= "" then
|
|
for i,name in ipairs(bindings) do
|
|
local _name = gui.str(name)
|
|
if ((_name:lower():find(search_text:lower()) and not search_key) or
|
|
(input.get_binding_text(name):lower():find(search_text:lower()) and search_key)) then
|
|
panel:add(gui.template("binding", {
|
|
id=name, name=_name
|
|
}))
|
|
end
|
|
end
|
|
else
|
|
for i,name in ipairs(bindings) do
|
|
panel:add(gui.template("binding", {
|
|
id=name, name=gui.str(name)
|
|
}))
|
|
end
|
|
end
|
|
end
|
|
|
|
function refresh_sensitivity()
|
|
document.sensitivity_label.text = string.format(
|
|
"%s: %s",
|
|
gui.str("Mouse Sensitivity", "settings"),
|
|
core.str_setting("camera.sensitivity")
|
|
)
|
|
end
|
|
|
|
function change_sensitivity(val)
|
|
core.set_setting("camera.sensitivity", val)
|
|
refresh_sensitivity()
|
|
end
|
|
|
|
function refresh_binding_marks()
|
|
local prev_bindings = {}
|
|
local conflicts_colors = {}
|
|
local available_colors = table.copy(WARNING_COLORS)
|
|
|
|
local bindings = input.get_bindings()
|
|
table.sort(bindings, function(a, b) return a > b end)
|
|
|
|
for _, bind_name in ipairs(bindings) do
|
|
local key = input.get_binding_text(bind_name)
|
|
local prev = prev_bindings[key]
|
|
if prev then
|
|
local color = GENERAL_WARNING_COLOR
|
|
local conflict_color = conflicts_colors[key]
|
|
local available_colors_len = #available_colors
|
|
if conflict_color then
|
|
color = conflict_color
|
|
elseif available_colors_len > 0 then
|
|
color = available_colors[available_colors_len]
|
|
conflicts_colors[key] = color
|
|
table.remove(available_colors, available_colors_len)
|
|
end
|
|
|
|
local tooltip = gui.str("settings.Conflict", "settings")
|
|
|
|
local prev_bindmark = "bindmark_" .. prev
|
|
local cur_bindmark = "bindmark_" .. bind_name
|
|
document[prev_bindmark].visible = true
|
|
document[cur_bindmark].visible = true
|
|
|
|
document[prev_bindmark].color = color
|
|
document[cur_bindmark].color = color
|
|
|
|
document["bind_" .. prev].tooltip = tooltip
|
|
document["bind_" .. bind_name].tooltip = tooltip
|
|
else
|
|
document["bindmark_" .. bind_name].visible = false
|
|
document["bind_" .. bind_name].tooltip = ''
|
|
prev_bindings[key] = bind_name
|
|
end
|
|
end
|
|
end
|
|
|
|
function on_open()
|
|
document.sensitivity_track.value = core.get_setting("camera.sensitivity")
|
|
refresh_sensitivity()
|
|
|
|
local panel = document.bindings_panel
|
|
local bindings = input.get_bindings()
|
|
table.sort(bindings, function(a, b) return a > b end)
|
|
for i,name in ipairs(bindings) do
|
|
panel:add(gui.template("binding", {
|
|
id=name, name=gui.str(name)
|
|
}))
|
|
end
|
|
|
|
document.bindings_panel:setInterval(100, function ()
|
|
refresh_binding_marks()
|
|
end)
|
|
end
|