summaryrefslogtreecommitdiff
path: root/src/settings_gui.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2012-12-05 19:35:09 +0000
committerfrosch <frosch@openttd.org>2012-12-05 19:35:09 +0000
commit22dc45738d2a3a9634693e43dbbf95d948142b83 (patch)
treece1da470d3cf9bca55ef581cb4bb8b47d638317c /src/settings_gui.cpp
parenta499435351fcb7b25e1e49e1366ebeac91636c35 (diff)
downloadopenttd-22dc45738d2a3a9634693e43dbbf95d948142b83.tar.xz
(svn r24787) -Fix: Unify checks for editability of settings.
Diffstat (limited to 'src/settings_gui.cpp')
-rw-r--r--src/settings_gui.cpp13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index 530dc6472..ee21d8d28 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -859,10 +859,7 @@ public:
/* skip deprecated difficulty options */
if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue;
int32 value = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv);
- bool disable = (sd->desc.flags & SGF_NEWGAME_ONLY) &&
- (_game_mode == GM_NORMAL ||
- (_game_mode == GM_EDITOR && (sd->desc.flags & SGF_SCENEDIT_TOO) == 0));
-
+ bool disable = !sd->IsEditable();
this->SetWidgetDisabledState(WID_GD_OPTIONS_START + i * 3 + 0, disable || sdb->min == value);
this->SetWidgetDisabledState(WID_GD_OPTIONS_START + i * 3 + 1, disable || sdb->max == (uint32)value);
}
@@ -1517,7 +1514,6 @@ void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right,
const SettingDesc *sd = this->d.entry.setting;
const SettingDescBase *sdb = &sd->desc;
const void *var = ResolveVariableAddress(settings_ptr, sd);
- bool editable = true;
bool rtl = _current_text_dir == TD_RTL;
uint buttons_left = rtl ? right + 1 - SETTING_BUTTON_WIDTH : left;
@@ -1526,9 +1522,7 @@ void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right,
uint button_y = y + (SETTING_HEIGHT - SETTING_BUTTON_HEIGHT) / 2;
/* We do not allow changes of some items when we are a client in a networkgame */
- if (!(sd->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(sdb->flags & SGF_PER_COMPANY)) editable = false;
- if ((sdb->flags & SGF_NETWORK_ONLY) && !_networking) editable = false;
- if ((sdb->flags & SGF_NO_NETWORK) && _networking) editable = false;
+ bool editable = sd->IsEditable();
SetDParam(0, highlight ? STR_ORANGE_STRING1_WHITE : STR_ORANGE_STRING1_LTBLUE);
int32 value = (int32)ReadValue(var, sd->save.conv);
@@ -2177,8 +2171,7 @@ struct GameSettingsWindow : Window {
const SettingDesc *sd = pe->d.entry.setting;
/* return if action is only active in network, or only settable by server */
- if ((!(sd->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(sd->desc.flags & SGF_PER_COMPANY)) ||
- ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) || ((sd->desc.flags & SGF_NO_NETWORK) && _networking)) {
+ if (!sd->IsEditable()) {
this->SetDisplayedHelpText(pe);
return;
}