changeset 8065:7db06d2429ce draft

(svn r11626) -Fix [FS#1529]: Pause state wasn't set correctly in multiplayer saves
author skidd13 <skidd13@openttd.org>
date Wed, 12 Dec 2007 21:56:10 +0000
parents 77c27cd64609
children 9d274d1bf328
files src/main_gui.cpp src/misc_cmd.cpp src/openttd.cpp
diffstat 3 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/main_gui.cpp
+++ b/src/main_gui.cpp
@@ -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);
 		}
--- a/src/misc_cmd.cpp
+++ b/src/misc_cmd.cpp
@@ -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:
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -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 */