changeset 13617:7d3438d227a4 draft

(svn r18141) -Fix (r18051): one couldn't (easily) continue a game in single player that was 'not enough players'/'waiting on join'-paused
author rubidium <rubidium@openttd.org>
date Tue, 17 Nov 2009 14:06:28 +0000
parents 74356f063275
children 7bfaf85c544c
files src/openttd.h src/saveload/afterload.cpp
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/openttd.h
+++ b/src/openttd.h
@@ -57,6 +57,9 @@
 	PM_PAUSED_JOIN           = 1 << 2, ///< A game paused for 'pause_on_join'
 	PM_PAUSED_ERROR          = 1 << 3, ///< A game paused because a (critical) error
 	PM_PAUSED_ACTIVE_CLIENTS = 1 << 4, ///< A game paused for 'min_active_clients'
+
+	/* Pause mode bits when paused for network reasons */
+	PMB_PAUSED_NETWORK = PM_PAUSED_ACTIVE_CLIENTS | PM_PAUSED_JOIN,
 };
 DECLARE_ENUM_AS_BIT_SET(PauseMode);
 typedef SimpleTinyEnumT<PauseMode, byte> PauseModeByte;
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -411,6 +411,15 @@
 		/* Restore the signals */
 		ResetSignalHandlers();
 		return false;
+	} else if (!_networking || _network_server) {
+		/* If we are in single player, i.e. not networking, and loading the
+		 * savegame or we are loading the savegame as network server we do
+		 * not want to be bothered by being paused because of the automatic
+		 * reason of a network server, e.g. joining clients or too few
+		 * active clients. Note that resetting these values for a network
+		 * client are very bad because then the client is going to execute
+		 * the game loop when the server is not, i.e. it desyncs. */
+		_pause_mode &= ~PMB_PAUSED_NETWORK;
 	}
 
 	/* in very old versions, size of train stations was stored differently */