From ebbfaced672abb14ed174e49008a3ba58a44d778 Mon Sep 17 00:00:00 2001 From: truelight Date: Wed, 25 Aug 2004 10:17:39 +0000 Subject: [PATCH] (svn r140) -Fix: Load Scenario fix --- ttd.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/ttd.c b/ttd.c index 5b2faee5f3..5385aa5937 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 @@ -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();