summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-08-25 10:17:39 +0000
committertruelight <truelight@openttd.org>2004-08-25 10:17:39 +0000
commitebbfaced672abb14ed174e49008a3ba58a44d778 (patch)
treec5b233be3be306f9c02981fe8e9af263355d3799
parentea2d013ff0b50090d6bbc7ca4bd70253fee2322b (diff)
downloadopenttd-ebbfaced672abb14ed174e49008a3ba58a44d778.tar.xz
(svn r140) -Fix: Load Scenario fix
-rw-r--r--ttd.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/ttd.c b/ttd.c
index 5b2faee5f..5385aa593 100644
--- a/ttd.c
+++ b/ttd.c
@@ -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 @@ void CDECL debug(const char *s, ...)
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 @@ int ttd_main(int argc, char* argv[])
MxInitialize(11025, "sample.cat");
// This must be done early, since functions use the InvalidateWindow* calls
- InitWindowSystem();
+ InitWindowSystem();
GfxLoadSprites();
LoadStringWidthTable();
@@ -597,13 +597,13 @@ int ttd_main(int argc, char* argv[])
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 @@ void LoadIntroGame()
_opt_mod_ptr = &_new_opt;
GfxLoadSprites();
LoadStringWidthTable();
-
+
// Setup main window
InitWindowSystem();
SetupColorsAndInitialWindow();
@@ -750,8 +750,10 @@ void StartScenario()
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 @@ bool SafeSaveOrLoad(const char *filename, int mode, int newgm)
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 @@ bool AfterLoadGame(uint version)
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();