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:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user