Index: binaries/data/mods/public/gui/options/options.js =================================================================== --- binaries/data/mods/public/gui/options/options.js +++ binaries/data/mods/public/gui/options/options.js @@ -7,7 +7,7 @@ g_HasCallback = true; g_Controls = {}; - var options = Engine.ReadJSONFile("gui/options/options.json"); + let options = Engine.ReadJSONFile("gui/options/options.json"); for (let category in options) { let lastSize; @@ -67,14 +67,14 @@ */ function setupControl(option, i, category) { - var control; - var onUpdate; - var key = option.parameters.config; + let control; + let key = option.parameters.config; switch (option.type) { case "boolean": case "invertedboolean": + { // More space for the label let text = Engine.GetGUIObjectByName(category + "Label[" + i + "]"); let size = text.size; @@ -110,11 +110,14 @@ } } // invertedboolean when we want to display the opposite of the flag value - var inverted = option.type === "invertedboolean"; + let inverted = option.type === "invertedboolean"; if (inverted) checked = !checked; - onUpdate = function(key, keyRenderer, inverted) + // Load final data to the control element. + control.checked = checked; + + control.onPress = function(key, keyRenderer, inverted) { return function() { @@ -126,12 +129,10 @@ updateOptionPanel(); }; }(key, keyRenderer, inverted); - - // Load final data to the control element. - control.checked = checked; - control.onPress = onUpdate; break; + } case "slider": + { control = Engine.GetGUIObjectByName(category + "Slider[" + i + "]"); let value; let callbackFunction; @@ -160,7 +161,7 @@ } } - onUpdate = function(key, callbackFunction, minvalue, maxvalue) + control.onSelectionChange = function(key, callbackFunction, minvalue, maxvalue) { return function() { @@ -178,10 +179,11 @@ control.value = value; control.max_value = maxvalue; control.min_value = minvalue; - control.onValueChange = onUpdate; break; + } case "number": case "string": + { control = Engine.GetGUIObjectByName(category + "Input[" + i + "]"); let caption; let functionBody; @@ -214,7 +216,7 @@ // - when the mouse leave the control (MouseLeave event) // - or when saving or closing the window (registerChanges function) // so we must ensure that something has indeed been modified - onUpdate = function(key, functionBody, minval, maxval) + let onUpdate = function(key, functionBody, minval, maxval) { return function() { @@ -236,7 +238,9 @@ control.onPress = onUpdate; control.onMouseLeave = onUpdate; break; + } case "dropdown": + { control = Engine.GetGUIObjectByName(category + "Dropdown[" + i + "]"); control.onSelectionChange = function(){}; // just the time to setup the value let config; @@ -259,7 +263,7 @@ } } - onUpdate = function(key) + control.onSelectionChange = function(key) { return function() { @@ -269,8 +273,8 @@ }; }(key); - control.onSelectionChange = onUpdate; break; + } default: warn("Unknown option type " + option.type + ", assuming string."); control = Engine.GetGUIObjectByName(category + "Input[" + i + "]");