mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
This commit is contained in:
parent
1688470eb9
commit
c544dca519
|
@ -1009,9 +1009,7 @@ static bool DifficultyChange(int32)
|
||||||
/* If we are a network-client, update the difficult setting (if it is open).
|
/* If we are a network-client, update the difficult setting (if it is open).
|
||||||
* Use this instead of just dirtying the window because we need to load in
|
* Use this instead of just dirtying the window because we need to load in
|
||||||
* the new difficulty settings */
|
* the new difficulty settings */
|
||||||
if (_networking && FindWindowById(WC_GAME_OPTIONS, 0) != NULL) {
|
if (_networking) InvalidateWindowClassesData(WC_GAME_OPTIONS, GOID_DIFFICULTY_CHANGED);
|
||||||
ShowGameDifficulty();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -659,9 +659,6 @@ public:
|
||||||
{
|
{
|
||||||
this->InitNested(desc);
|
this->InitNested(desc);
|
||||||
|
|
||||||
/* Copy current settings (ingame or in intro) to temporary holding place
|
|
||||||
* change that when setting stuff, copy back on clicking 'OK' */
|
|
||||||
this->opt_mod_temp = GetGameSettings();
|
|
||||||
/* Setup disabled buttons when creating window
|
/* Setup disabled buttons when creating window
|
||||||
* disable all other difficulty buttons during gameplay except for 'custom' */
|
* disable all other difficulty buttons during gameplay except for 'custom' */
|
||||||
this->SetWidgetsDisabledState(_game_mode != GM_MENU,
|
this->SetWidgetsDisabledState(_game_mode != GM_MENU,
|
||||||
|
@ -672,8 +669,9 @@ public:
|
||||||
WIDGET_LIST_END);
|
WIDGET_LIST_END);
|
||||||
this->SetWidgetDisabledState(GDW_HIGHSCORE, _game_mode == GM_EDITOR || _networking); // highscore chart in multiplayer
|
this->SetWidgetDisabledState(GDW_HIGHSCORE, _game_mode == GM_EDITOR || _networking); // highscore chart in multiplayer
|
||||||
this->SetWidgetDisabledState(GDW_ACCEPT, _networking && !_network_server); // Save-button in multiplayer (and if client)
|
this->SetWidgetDisabledState(GDW_ACCEPT, _networking && !_network_server); // Save-button in multiplayer (and if client)
|
||||||
this->LowerWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
|
|
||||||
this->OnInvalidateData();
|
/* Read data */
|
||||||
|
this->OnInvalidateData(GOID_DIFFICULTY_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void SetStringParameters(int widget) const
|
virtual void SetStringParameters(int widget) const
|
||||||
|
@ -803,6 +801,17 @@ public:
|
||||||
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
|
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
|
||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
|
if (data == GOID_DIFFICULTY_CHANGED) {
|
||||||
|
/* Window was created or settings were changed on server. Reread everything. */
|
||||||
|
|
||||||
|
/* Copy current settings (ingame or in intro) to temporary holding place
|
||||||
|
* change that when setting stuff, copy back on clicking 'OK' */
|
||||||
|
this->opt_mod_temp = GetGameSettings();
|
||||||
|
|
||||||
|
this->LowerWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
|
||||||
|
}
|
||||||
|
|
||||||
uint i;
|
uint i;
|
||||||
const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i);
|
const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i);
|
||||||
for (i = 0; i < GAME_DIFFICULTY_NUM; i++, sd++) {
|
for (i = 0; i < GAME_DIFFICULTY_NUM; i++, sd++) {
|
||||||
|
|
|
@ -123,6 +123,7 @@ enum GameOptionsInvalidationData {
|
||||||
GOID_NEWGRF_RESCANNED, ///< NewGRFs were just rescanned.
|
GOID_NEWGRF_RESCANNED, ///< NewGRFs were just rescanned.
|
||||||
GOID_NEWGRF_LIST_EDITED, ///< List of active NewGRFs is being edited.
|
GOID_NEWGRF_LIST_EDITED, ///< List of active NewGRFs is being edited.
|
||||||
GOID_NEWGRF_PRESET_LOADED, ///< A NewGRF preset was picked.
|
GOID_NEWGRF_PRESET_LOADED, ///< A NewGRF preset was picked.
|
||||||
|
GOID_DIFFICULTY_CHANGED, ///< Difficulty settings were changed.
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Window;
|
struct Window;
|
||||||
|
|
Loading…
Reference in New Issue