1
0
forked from mirrors/0ad

Options page cleanup.

Unify renderer and common callback function.

Differential Revision: https://code.wildfiregames.com/D839
Reviewed By: bb
Agreed with Vladislav

This was SVN commit r20066.
This commit is contained in:
elexis
2017-08-28 19:37:31 +00:00
parent f6c8fb4ba0
commit 8da0f129ef
2 changed files with 26 additions and 52 deletions
@@ -80,8 +80,6 @@ function setupControl(option, i, category)
text.size = size;
control = Engine.GetGUIObjectByName(category + "Tickbox[" + i + "]");
let checked;
let keyRenderer;
for (let param in option.parameters)
{
switch (param)
@@ -89,36 +87,24 @@ function setupControl(option, i, category)
case "config":
checked = Engine.ConfigDB_GetValue("user", key) == "true";
break;
case "renderer":
keyRenderer = option.parameters.renderer;
if (!Engine["Renderer_Get" + keyRenderer + "Enabled"])
{
warn("Invalid renderer key " + keyRenderer);
keyRenderer = undefined;
break;
}
if (Engine["Renderer_Get" + keyRenderer + "Enabled"]() != checked)
{
warn("Incompatible renderer option value for " + keyRenderer);
Engine["Renderer_Set" + keyRenderer + "Enabled"](checked);
}
case "function":
break;
default:
warn("Unknown option source type '" + param + "'");
}
}
onUpdate = function(key, keyRenderer)
onUpdate = function(key)
{
return function()
{
if (keyRenderer)
Engine["Renderer_Set" + keyRenderer + "Enabled"](this.checked);
if (option.parameters.function)
Engine[option.parameters.function](this.checked);
Engine.ConfigDB_CreateValue("user", key, String(this.checked));
Engine.ConfigDB_SetChanges("user", true);
updateOptionPanel();
};
}(key, keyRenderer);
}(key);
// Load final data to the control element.
control.checked = checked;
@@ -353,27 +339,15 @@ function revertChanges()
for (let item in g_Controls)
{
let control = g_Controls[item];
// needs to update renderer values (which are all of boolean type)
if (control.parameters.renderer)
{
if (control.type != "boolean")
{
warn("Invalid type option " + control.type + " defined in renderer for " + item + ": will not be reverted");
continue;
}
let checked = Engine.ConfigDB_GetValue("user", item) == "true";
Engine["Renderer_Set" + control.parameters.renderer + "Enabled"](checked);
}
// and the possible function calls (which are of number or string types)
if (control.parameters.function)
{
if (control.type != "string" && control.type != "number" && control.type != "slider" && control.type != "dropdown")
{
warn("Invalid type option " + control.type + " defined with function for " + item + ": will not be reverted");
continue;
}
let caption = Engine.ConfigDB_GetValue("user", item);
Engine[control.parameters.function](+caption);
let value = Engine.ConfigDB_GetValue("user", item);
Engine[control.parameters.function](
(control.type == "string" || control.type == "dropdown") ?
value :
control.type == "boolean" ?
value == "true" :
+value);
}
}
Engine.ConfigDB_SetChanges("user", false);
@@ -142,13 +142,13 @@
"type": "boolean",
"label": "Prefer GLSL",
"tooltip": "Use OpenGL 2.0 shaders (recommended)",
"parameters": { "config": "preferglsl", "renderer": "PreferGLSL" }
"parameters": { "config": "preferglsl", "function": "Renderer_SetPreferGLSLEnabled" }
},
{
"type": "boolean",
"label": "Post Processing",
"tooltip": "Use screen-space postprocessing filters (HDR, Bloom, DOF, etc)",
"parameters": { "config": "postproc", "renderer": "Postproc" }
"parameters": { "config": "postproc", "function": "Renderer_SetPostprocEnabled" }
},
{
"type": "slider",
@@ -160,7 +160,7 @@
"type": "boolean",
"label": "Shadows",
"tooltip": "Enable shadows",
"parameters": { "config": "shadows", "renderer": "Shadows" },
"parameters": { "config": "shadows", "function": "Renderer_SetShadowsEnabled" },
"dependencies": [ "shadowquality", "shadowpcf" ]
},
{
@@ -183,68 +183,68 @@
"type": "boolean",
"label": "Shadow Filtering",
"tooltip": "Smooth shadows",
"parameters": { "config": "shadowpcf", "renderer": "ShadowPCF" }
"parameters": { "config": "shadowpcf", "function": "Renderer_SetShadowPCFEnabled" }
},
{
"type": "boolean",
"label": "Unit Silhouettes",
"tooltip": "Show outlines of units behind buildings",
"parameters": { "config": "silhouettes", "renderer": "Silhouettes" }
"parameters": { "config": "silhouettes", "function": "Renderer_SetSilhouettesEnabled" }
},
{
"type": "boolean",
"label": "Particles",
"tooltip": "Enable particles",
"parameters": { "config": "particles", "renderer": "Particles" }
"parameters": { "config": "particles", "function": "Renderer_SetParticlesEnabled" }
},
{
"type": "boolean",
"label": "Water Effects",
"tooltip": "When OFF, use the lowest settings possible to render water. This makes other settings irrelevant.",
"parameters": { "config": "watereffects", "renderer": "WaterEffects" },
"parameters": { "config": "watereffects", "function": "Renderer_SetWaterEffectsEnabled" },
"dependencies": [ "waterfancyeffects", "waterrealdepth", "waterreflection", "waterrefraction", "watershadows" ]
},
{
"type": "boolean",
"label": "HQ Water Effects",
"tooltip": "Use higher-quality effects for water, rendering coastal waves, shore foam, and ships trails.",
"parameters": { "config": "waterfancyeffects", "renderer": "WaterFancyEffects" }
"parameters": { "config": "waterfancyeffects", "function": "Renderer_SetWaterFancyEffectsEnabled" }
},
{
"type": "boolean",
"label": "Real Water Depth",
"tooltip": "Use actual water depth in rendering calculations",
"parameters": { "config": "waterrealdepth", "renderer": "WaterRealDepth" }
"parameters": { "config": "waterrealdepth", "function": "Renderer_SetWaterRealDepthEnabled" }
},
{
"type": "boolean",
"label": "Water Reflections",
"tooltip": "Allow water to reflect a mirror image",
"parameters": { "config": "waterreflection", "renderer": "WaterReflection" }
"parameters": { "config": "waterreflection", "function": "Renderer_SetWaterReflectionEnabled" }
},
{
"type": "boolean",
"label": "Water Refraction",
"tooltip": "Use a real water refraction map and not transparency",
"parameters": { "config": "waterrefraction", "renderer": "WaterRefraction" }
"parameters": { "config": "waterrefraction", "function": "Renderer_SetWaterRefractionEnabled" }
},
{
"type": "boolean",
"label": "Shadows on Water",
"tooltip": "Cast shadows on water",
"parameters": { "config": "watershadows", "renderer": "WaterShadows" }
"parameters": { "config": "watershadows", "function": "Renderer_SetWaterShadowsEnabled" }
},
{
"type": "boolean",
"label": "Smooth LOS",
"tooltip": "Lift darkness and fog-of-war smoothly",
"parameters": { "config": "smoothlos", "renderer": "SmoothLOS" }
"parameters": { "config": "smoothlos", "function": "Renderer_SetSmoothLOSEnabled" }
},
{
"type": "boolean",
"label": "Show Sky",
"tooltip": "Render Sky",
"parameters": { "config": "showsky", "renderer": "ShowSky" }
"parameters": { "config": "showsky", "function": "Renderer_SetShowSkyEnabled" }
},
{
"type": "boolean",