(svn r140) -Fix: Load Scenario fix
authortruelight
Wed, 25 Aug 2004 10:17:39 +0000
changeset 139 ac354a826b30
parent 138 6ab4d97d1034
child 140 b00ce8503044
(svn r140) -Fix: Load Scenario fix
ttd.c
--- a/ttd.c	Wed Aug 25 09:23:55 2004 +0000
+++ b/ttd.c	Wed Aug 25 10:17:39 2004 +0000
@@ -20,7 +20,7 @@
 #include "hal.h"
 #include "airport.h"
 #include "saveload.h"
-#include "ai.h"
+#include "ai.h"
 #include "console.h"
 
 #include <stdarg.h>
@@ -75,7 +75,7 @@
 	va_start(va, s);
 	vsprintf(buf, s, va);
 	va_end(va);
-	fprintf(stderr, "dbg: %s\n", buf);
+	fprintf(stderr, "dbg: %s\n", buf);
 	IConsoleDebug((byte *) &buf);
 }
 
@@ -571,7 +571,7 @@
 	MxInitialize(11025, "sample.cat"); 
 
 	// This must be done early, since functions use the InvalidateWindow* calls
-	InitWindowSystem();
+	InitWindowSystem();
 
 	GfxLoadSprites();
 	LoadStringWidthTable();
@@ -597,13 +597,13 @@
 			NetworkCoreConnectGame("auto",_network_server_port);
 			}
 		}
-
-	// initialize the ingame console
-	IConsoleInit();
+
+	// initialize the ingame console
+	IConsoleInit();
 
 	while (_video_driver->main_loop() == ML_SWITCHDRIVER) {}
-
-	IConsoleFree();
+
+	IConsoleFree();
 
 	if (_network_available) {
 		// shutdown network-core
@@ -642,7 +642,7 @@
 	_opt_mod_ptr = &_new_opt;
 	GfxLoadSprites();
 	LoadStringWidthTable();
-	
+	
 	// Setup main window
 	InitWindowSystem();
 	SetupColorsAndInitialWindow();
@@ -750,8 +750,10 @@
 	StartupEngines();
 	StartupDisasters();
 
-	// Create a single player
-	DoStartupNewPlayer(false);
+	// When starting a scenario, is it really a load..
+	//  and in AfterLoad a player is started when it is
+	//  a scenario.. so we do not need it here.
+//	DoStartupNewPlayer(false);
 	
 	_local_player = 0;
 
@@ -782,7 +784,7 @@
 
 static void SwitchMode(int new_mode)
 {
-	_in_state_game_loop = true;
+	_in_state_game_loop = true;
 	
 	switch(new_mode) {
 	case SM_EDITOR: // Switch to scenario editor
@@ -1133,6 +1135,11 @@
 	if (version <= 0x400) {
 		CheckIsPlayerActive();
 	}
+	
+	// If Load Scenario / New (Scenario) Game is used, 
+	//  a player does not exist yet. So create one here.
+	if (!_players[0].is_active)
+		DoStartupNewPlayer(false);
 
 	DoZoomInOut(ZOOM_NONE); // update button status
 	MarkWholeScreenDirty();