# HG changeset patch # User skidd13 # Date 1197496570 0 # Node ID e97b716fabee3f88a3ff3756362e060b74b663f1 # Parent 8472721356cf873da3bd4f91891ca0714a030cd0 (svn r11626) -Fix [FS#1529]: Pause state wasn't set correctly in multiplayer saves diff -r 8472721356cf -r e97b716fabee src/main_gui.cpp --- a/src/main_gui.cpp Wed Dec 12 14:37:35 2007 +0000 +++ b/src/main_gui.cpp Wed Dec 12 21:56:10 2007 +0000 @@ -1677,12 +1677,12 @@ } break; case WE_MOUSELOOP: - if (w->IsWidgetLowered(0) != !!_pause_game) { + if (w->IsWidgetLowered(0) != (bool)_pause_game) { w->ToggleWidgetLoweredState(0); w->InvalidateWidget(0); } - if (w->IsWidgetLowered(1) != !!_fast_forward) { + if (w->IsWidgetLowered(1) != (bool)_fast_forward) { w->ToggleWidgetLoweredState(1); w->InvalidateWidget(1); } @@ -1986,12 +1986,12 @@ } break; case WE_MOUSELOOP: - if (w->IsWidgetLowered(0) != !!_pause_game) { + if (w->IsWidgetLowered(0) != (bool)_pause_game) { w->ToggleWidgetLoweredState(0); SetWindowDirty(w); } - if (w->IsWidgetLowered(1) != !!_fast_forward) { + if (w->IsWidgetLowered(1) != (bool)_fast_forward) { w->ToggleWidgetLoweredState(1); SetWindowDirty(w); } diff -r 8472721356cf -r e97b716fabee src/misc_cmd.cpp --- a/src/misc_cmd.cpp Wed Dec 12 14:37:35 2007 +0000 +++ b/src/misc_cmd.cpp Wed Dec 12 21:56:10 2007 +0000 @@ -317,7 +317,7 @@ CommandCost CmdPause(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { if (flags & DC_EXEC) { - _pause_game += (p1 == 1) ? 1 : -1; + _pause_game += (p1 == 0) ? -1 : 1; switch (_pause_game) { case (byte)-4: diff -r 8472721356cf -r e97b716fabee src/openttd.cpp --- a/src/openttd.cpp Wed Dec 12 14:37:35 2007 +0000 +++ b/src/openttd.cpp Wed Dec 12 21:56:10 2007 +0000 @@ -912,7 +912,8 @@ /* Update the local player for a loaded game. It is either always * player #1 (eg 0) or in the case of a dedicated server a spectator */ SetLocalPlayer(_network_dedicated ? PLAYER_SPECTATOR : PLAYER_FIRST); - DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // decrease pause counter (was increased from opening load dialog) + /* Decrease pause counter (was increased from opening load dialog) */ + DoCommandP(0, 0, 0, NULL, CMD_PAUSE); #ifdef ENABLE_NETWORK if (_network_server) { snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title); @@ -956,12 +957,15 @@ break; case SM_SAVE: /* Save game */ + /* Make network saved games on pause compatible to singleplayer */ + if (_networking && _pause_game == 1) _pause_game = 2; if (SaveOrLoad(_file_to_saveload.name, SL_SAVE, NO_DIRECTORY) != SL_OK) { SetDParamStr(0, GetSaveLoadErrorString()); ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); } else { DeleteWindowById(WC_SAVELOAD, 0); } + if (_networking && _pause_game == 2) _pause_game = 1; break; case SM_GENRANDLAND: /* Generate random land within scenario editor */