summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskidd13 <skidd13@openttd.org>2007-12-12 21:56:10 +0000
committerskidd13 <skidd13@openttd.org>2007-12-12 21:56:10 +0000
commit1d9c27e235f08829d3f7aed2602225a291b05d8a (patch)
treea283d707f87e6c4c59af67c90bff1b57172d3096
parent5acc147c1cc5322ad1f307f4e1143a17cb8f77b3 (diff)
downloadopenttd-1d9c27e235f08829d3f7aed2602225a291b05d8a.tar.xz
(svn r11626) -Fix [FS#1529]: Pause state wasn't set correctly in multiplayer saves
-rw-r--r--src/main_gui.cpp8
-rw-r--r--src/misc_cmd.cpp2
-rw-r--r--src/openttd.cpp6
3 files changed, 10 insertions, 6 deletions
diff --git a/src/main_gui.cpp b/src/main_gui.cpp
index f1d8d447d..82faefb59 100644
--- a/src/main_gui.cpp
+++ b/src/main_gui.cpp
@@ -1677,12 +1677,12 @@ static void MainToolbarWndProc(Window *w, WindowEvent *e)
} 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 @@ static void ScenEditToolbarWndProc(Window *w, WindowEvent *e)
} 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 --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp
index c30d62d61..cd42c5907 100644
--- a/src/misc_cmd.cpp
+++ b/src/misc_cmd.cpp
@@ -317,7 +317,7 @@ static void AskUnsafeUnpauseCallback(Window *w, bool confirmed)
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 --git a/src/openttd.cpp b/src/openttd.cpp
index a84030903..72fd4eb7b 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -912,7 +912,8 @@ void SwitchMode(int new_mode)
/* 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 @@ void SwitchMode(int new_mode)
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 */