diff options
Diffstat (limited to 'ttd.c')
-rw-r--r-- | ttd.c | 31 |
1 files changed, 19 insertions, 12 deletions
@@ -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(); |