GUI: Allow game gfx override to specify no shader.

This commit is contained in:
Eugene Sandulenko 2022-10-22 18:16:09 +02:00
parent 118d310b51
commit 026479d30a
No known key found for this signature in database
GPG key ID: 014D387312D34F08

View file

@ -425,7 +425,7 @@ void OptionsDialog::build() {
if (ConfMan.isKeyTemporary("shader")) {
_shader->setFontColor(ThemeEngine::FontColor::kFontColorOverride);
}
if (shader.empty() || !ConfMan.hasKey("shader", _domain)) {
if (shader.empty() || shader == "default" || !ConfMan.hasKey("shader", _domain)) {
_shader->setLabel(_c("None", "shader"));
_shaderClearButton->setEnabled(false);
} else {
@ -710,26 +710,17 @@ void OptionsDialog::apply() {
// Shader options
if (_shader) {
bool isSet;
if (ConfMan.hasKey("shader", _domain) && !ConfMan.get("shader", _domain).empty())
previousShader = ConfMan.get("shader", _domain);
Common::U32String shader(_shader->getLabel());
if (shader.empty() || (shader == _c("None", "shader")))
isSet = false;
else
isSet = true;
if (isSet) {
if (!ConfMan.hasKey("shader", _domain) || shader != ConfMan.get("shader", _domain))
graphicsModeChanged = true;
ConfMan.set("shader", shader.encode(), _domain);
} else {
if (ConfMan.hasKey("shader", _domain) && !ConfMan.get("shader", _domain).empty())
graphicsModeChanged = true;
ConfMan.removeKey("shader", _domain);
}
if (shader == _c("None", "shader"))
shader = "default";
if (!ConfMan.hasKey("shader", _domain) || shader != ConfMan.get("shader", _domain))
graphicsModeChanged = true;
ConfMan.set("shader", shader.encode(), _domain);
_shader->setFontColor(ThemeEngine::FontColor::kFontColorNormal);
}
@ -812,12 +803,14 @@ void OptionsDialog::apply() {
}
if (gfxError & OSystem::kTransactionShaderChangeFailed) {
if (previousShader == _c("None", "shader"))
previousShader = "default";
ConfMan.set("shader", previousShader.encode(), _domain);
if (previousShader.empty()) {
ConfMan.removeKey("shader", _domain);
_shader->setLabel(_c("None", "shader"));
_shaderClearButton->setEnabled(false);
} else {
ConfMan.set("shader", previousShader.encode(), _domain);
_shader->setLabel(previousShader);
_shaderClearButton->setEnabled(true);
}
@ -838,12 +831,14 @@ void OptionsDialog::apply() {
// If shader was changed, show the test dialog
if (previousShader != shader && !shader.empty()) {
if (!testGraphicsSettings()) {
if (previousShader == _c("None", "shader"))
previousShader = "default";
ConfMan.set("shader", previousShader.encode(), _domain);
if (previousShader.empty()) {
ConfMan.removeKey("shader", _domain);
_shader->setLabel(_c("None", "shader"));
_shaderClearButton->setEnabled(false);
} else {
ConfMan.set("shader", previousShader.encode(), _domain);
_shader->setLabel(previousShader);
_shaderClearButton->setEnabled(true);
}