diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -516,7 +516,7 @@ break; case SLWW_LOAD_BUTTON: - if (this->selected != NULL && !_load_check_data.HasErrors()) { + if (this->selected != NULL && !_load_check_data.HasErrors() && (_load_check_data.grf_compatibility == 0 || _settings_client.gui.scenario_developer)) { _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD; const char *name = FiosBrowseTo(this->selected); @@ -665,7 +665,7 @@ /* Selection changes */ if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) { this->SetWidgetDisabledState(SLWW_LOAD_BUTTON, - this->selected == NULL || _load_check_data.HasErrors()); + this->selected == NULL || _load_check_data.HasErrors() || !(_load_check_data.grf_compatibility == 0 || _settings_client.gui.scenario_developer)); this->SetWidgetDisabledState(SLWW_NEWGRF_INFO, !_load_check_data.HasNewGrfs()); } diff --git a/src/settings_type.h b/src/settings_type.h --- a/src/settings_type.h +++ b/src/settings_type.h @@ -111,6 +111,7 @@ bool show_date_in_logs; ///< whether to show dates in console logs bool newgrf_developer_tools; ///< activate NewGRF developer tools bool ai_developer_tools; ///< activate AI developer tools + bool scenario_developer; ///< activate scenario developer: allow modifying NewGRFs on an existing game bool newgrf_show_old_versions; ///< whether to show old versions in the NewGRF list }; diff --git a/src/table/settings.h b/src/table/settings.h --- a/src/table/settings.h +++ b/src/table/settings.h @@ -617,6 +617,7 @@ SDTC_VAR(gui.developer, SLE_UINT8, S, 0, 1, 0, 2, 0, STR_NULL, NULL), SDTC_BOOL(gui.newgrf_developer_tools, S, 0, false, STR_NULL, ReinitWindows), SDTC_BOOL(gui.ai_developer_tools, S, 0, false, STR_NULL, NULL), + SDTC_BOOL(gui.scenario_developer, S, 0, false, STR_NULL, NULL), SDTC_BOOL(gui.newgrf_show_old_versions, S, 0, false, STR_NULL, NULL), SDTC_VAR(gui.console_backlog_timeout, SLE_UINT16, S, 0, 100, 10, 65500, 0, STR_NULL, NULL), SDTC_VAR(gui.console_backlog_length, SLE_UINT16, S, 0, 100, 10, 65500, 0, STR_NULL, NULL), diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -319,7 +319,7 @@ case OME_GAMEOPTIONS: ShowGameOptions(); return; case OME_DIFFICULTIES: ShowGameDifficulty(); return; case OME_SETTINGS: ShowGameSettings(); return; - case OME_NEWGRFSETTINGS: ShowNewGRFSettings(!_networking, true, true, &_grfconfig); return; + case OME_NEWGRFSETTINGS: ShowNewGRFSettings(!_networking && _settings_client.gui.scenario_developer, true, true, &_grfconfig); return; case OME_TRANSPARENCIES: ShowTransparencyToolbar(); break; case OME_SHOW_TOWNNAMES: ToggleBit(_display_opt, DO_SHOW_TOWN_NAMES); break;