Index: ps/trunk/binaries/data/mods/mod/gui/common/modern/sprites.xml =================================================================== --- ps/trunk/binaries/data/mods/mod/gui/common/modern/sprites.xml +++ ps/trunk/binaries/data/mods/mod/gui/common/modern/sprites.xml @@ -822,4 +822,16 @@ texture_size="0 0 24 24" /> + + + + + + Index: ps/trunk/binaries/data/mods/public/gui/options/options.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/options/options.js +++ ps/trunk/binaries/data/mods/public/gui/options/options.js @@ -131,8 +131,55 @@ control.checked = checked; control.onPress = onUpdate; break; + case "slider": + control = Engine.GetGUIObjectByName(category + "Slider[" + i + "]"); + let value; + let callbackFunction; + let minvalue; + let maxvalue; + + for (let param in option.parameters) + { + switch (param) + { + case "config": + value = +Engine.ConfigDB_GetValue("user", key); + break; + case "function": + if (Engine[option.parameters.function]) + callbackFunction = option.parameters.function; + break; + case "min": + minvalue = +option.parameters.min; + break; + case "max": + maxvalue = +option.parameters.max; + break; + default: + warn("Unknown option source type '" + param + "'"); + } + } + + onUpdate = function(key, callbackFunction, minvalue, maxvalue) + { + return function() + { + if (Engine.ConfigDB_GetValue("user", key) === this.value) + return; + Engine.ConfigDB_CreateValue("user", key, this.value); + Engine.ConfigDB_SetChanges("user", true); + if (callbackFunction) + Engine[callbackFunction](+this.value); + updateOptionPanel(); + }; + }(key, callbackFunction, minvalue, maxvalue); + + control.value = value; + control.max_value = maxvalue; + control.min_value = minvalue; + control.onValueChange = onUpdate; + break; case "number": - // TODO: Slider case "string": control = Engine.GetGUIObjectByName(category + "Input[" + i + "]"); let caption; @@ -310,7 +357,7 @@ // and the possible function calls (which are of number or string types) if (control.parameters.function) { - if (control.type !== "string" && control.type !== "number") + if (control.type !== "string" && control.type !== "number" && control.type !== "slider") { warn("Invalid type option " + control.type + " defined with function for " + item + ": will not be reverted"); continue; Index: ps/trunk/binaries/data/mods/public/gui/options/options.json =================================================================== --- ps/trunk/binaries/data/mods/public/gui/options/options.json +++ ps/trunk/binaries/data/mods/public/gui/options/options.json @@ -214,34 +214,34 @@ "soundSetting": [ { - "type": "number", + "type": "slider", "label": "Master Gain", "tooltip": "Master audio gain", - "parameters": { "config": "sound.mastergain", "function": "SetMasterGain", "min": "0" } + "parameters": { "config": "sound.mastergain", "function": "SetMasterGain", "min": 0, "max": 2 } }, { - "type": "number", + "type": "slider", "label": "Music Gain", "tooltip": "In game music gain", - "parameters": { "config": "sound.musicgain", "function": "SetMusicGain", "min": "0" } + "parameters": { "config": "sound.musicgain", "function": "SetMusicGain", "min": 0, "max": 2 } }, { - "type": "number", + "type": "slider", "label": "Ambient Gain", "tooltip": "In game ambient sound gain", - "parameters": { "config": "sound.ambientgain", "function": "SetAmbientGain", "min": "0" } + "parameters": { "config": "sound.ambientgain", "function": "SetAmbientGain", "min": 0, "max": 2 } }, { - "type": "number", + "type": "slider", "label": "Action Gain", "tooltip": "In game unit action sound gain", - "parameters": { "config": "sound.actiongain", "function": "SetActionGain", "min": "0" } + "parameters": { "config": "sound.actiongain", "function": "SetActionGain", "min": 0, "max": 2 } }, { - "type": "number", + "type": "slider", "label": "UI Gain", "tooltip": "UI sound gain", - "parameters": { "config": "sound.uigain", "function": "SetUIGain", "min": "0" } + "parameters": { "config": "sound.uigain", "function": "SetUIGain", "min": 0, "max": 2 } }, { "type": "boolean", Index: ps/trunk/binaries/data/mods/public/gui/options/options.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/options/options.xml +++ ps/trunk/binaries/data/mods/public/gui/options/options.xml @@ -51,7 +51,7 @@