From bab9baa42a55adc9bde2d42b9802e8159ffe6966 Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 1 Aug 2021 09:46:31 +0200 Subject: [PATCH] Handle gbQuietMode for paths in StartGame --- Source/diablo.cpp | 48 +++++++++++++++++------------- Source/engine/demomode.cpp | 2 +- Source/gamemenu.cpp | 6 ++-- Source/init.cpp | 12 ++++---- Source/interfac.cpp | 61 ++++++++++++++++++++++---------------- 5 files changed, 75 insertions(+), 54 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index 2700b7b96..ef3d78258 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -153,7 +153,7 @@ void StartGame(interface_mode uMsg) #ifdef _DEBUG LoadDebugGFX(); #endif - assert(ghMainWnd); + assert(gbQuietMode || ghMainWnd); music_stop(); InitMonsterHealthBar(); InitXPBar(); @@ -693,16 +693,20 @@ void GameEventHandler(uint32_t uMsg, int32_t wParam, int32_t lParam) if (gbIsMultiplayer) pfile_write_hero(); nthread_ignore_mutex(true); - PaletteFadeOut(8); - sound_stop(); + if (!gbQuietMode) { + PaletteFadeOut(8); + sound_stop(); + } LastMouseButtonAction = MouseActionType::None; sgbMouseDown = CLICK_NONE; ShowProgress((interface_mode)uMsg); force_redraw = 255; - DrawAndBlit(); - LoadPWaterPalette(); - if (gbRunGame) - PaletteFadeIn(8); + if (!gbQuietMode) { + DrawAndBlit(); + LoadPWaterPalette(); + if (gbRunGame) + PaletteFadeIn(8); + } nthread_ignore_mutex(false); gbGameLoopStartup = true; return; @@ -719,17 +723,19 @@ void RunGameLoop(interface_mode uMsg) nthread_ignore_mutex(true); StartGame(uMsg); - assert(ghMainWnd); + assert(gbQuietMode || ghMainWnd); EventHandler previousHandler = SetEventHandler(GameEventHandler); run_delta_info(); gbRunGame = true; gbProcessPlayers = true; gbRunGameResult = true; - force_redraw = 255; - DrawAndBlit(); - LoadPWaterPalette(); - PaletteFadeIn(8); - force_redraw = 255; + if (!gbQuietMode) { + force_redraw = 255; + DrawAndBlit(); + LoadPWaterPalette(); + PaletteFadeIn(8); + force_redraw = 255; + } gbGameLoopStartup = true; nthread_ignore_mutex(false); @@ -798,13 +804,15 @@ void RunGameLoop(interface_mode uMsg) sfile_write_stash(); } - PaletteFadeOut(8); - NewCursor(CURSOR_NONE); - ClearScreenBuffer(); - force_redraw = 255; - scrollrt_draw_game_screen(); + if (!gbQuietMode) { + PaletteFadeOut(8); + NewCursor(CURSOR_NONE); + ClearScreenBuffer(); + force_redraw = 255; + scrollrt_draw_game_screen(); + } previousHandler = SetEventHandler(previousHandler); - assert(previousHandler == GameEventHandler); + assert(gbQuietMode || previousHandler == GameEventHandler); FreeGame(); if (cineflag) { @@ -2299,7 +2307,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir) IncProgress(); IncProgress(); - if (firstflag) { + if (firstflag && !gbQuietMode) { InitControlPan(); } IncProgress(); diff --git a/Source/engine/demomode.cpp b/Source/engine/demomode.cpp index 692cb5b59..e1425c1c2 100644 --- a/Source/engine/demomode.cpp +++ b/Source/engine/demomode.cpp @@ -173,7 +173,7 @@ bool GetRunGameLoop(bool &drawGame, bool &processInput) app_fatal("Unexpected Message"); if (Timedemo) { // disable additonal rendering to speedup replay - drawGame = dmsg.type == DemoMsgType::GameTick; + drawGame = dmsg.type == DemoMsgType::GameTick && !gbQuietMode; } else { int currentTickCount = SDL_GetTicks(); int ticksElapsed = currentTickCount - DemoModeLastTick; diff --git a/Source/gamemenu.cpp b/Source/gamemenu.cpp index f639ab67f..59313bdd4 100644 --- a/Source/gamemenu.cpp +++ b/Source/gamemenu.cpp @@ -101,8 +101,10 @@ void GamemenuNewGame(bool /*bActivate*/) } MyPlayerIsDead = false; - force_redraw = 255; - scrollrt_draw_game_screen(); + if (!gbQuietMode) { + force_redraw = 255; + scrollrt_draw_game_screen(); + } CornerStone.activated = false; gbRunGame = false; gamemenu_off(); diff --git a/Source/init.cpp b/Source/init.cpp index 2416bd888..5767bb072 100644 --- a/Source/init.cpp +++ b/Source/init.cpp @@ -187,12 +187,14 @@ void LoadGameArchives() if (spawn_mpq) gbIsSpawn = true; } - SDL_RWops *handle = OpenAsset("ui_art\\title.pcx"); - if (handle == nullptr) { - LogError("{}", SDL_GetError()); - InsertCDDlg(_("diabdat.mpq or spawn.mpq")); + if (!gbQuietMode) { + SDL_RWops *handle = OpenAsset("ui_art\\title.pcx"); + if (handle == nullptr) { + LogError("{}", SDL_GetError()); + InsertCDDlg(_("diabdat.mpq or spawn.mpq")); + } + SDL_RWclose(handle); } - SDL_RWclose(handle); hellfire_mpq = LoadMPQ(paths, "hellfire.mpq"); if (hellfire_mpq) diff --git a/Source/interfac.cpp b/Source/interfac.cpp index 4769f82b2..fc518f8e4 100644 --- a/Source/interfac.cpp +++ b/Source/interfac.cpp @@ -220,6 +220,8 @@ void interface_msg_pump() void IncProgress() { + if (gbQuietMode) + return; interface_msg_pump(); if (!IsProgress) return; @@ -231,6 +233,8 @@ void IncProgress() void CompleteProgress() { + if (gbQuietMode) + return; if (!IsProgress) return; while (sgdwProgress < MaxProgress) @@ -244,35 +248,38 @@ void ShowProgress(interface_mode uMsg) gbSomebodyWonGameKludge = false; plrmsg_delay(true); - assert(ghMainWnd); EventHandler previousHandler = SetEventHandler(DisableInputEventHandler); - interface_msg_pump(); - ClearScreenBuffer(); - scrollrt_draw_game_screen(); - BlackPalette(); - - // Blit the background once and then free it. - LoadCutsceneBackground(uMsg); - DrawCutsceneBackground(); - if (RenderDirectlyToOutputSurface && IsDoubleBuffered()) { - // Blit twice for triple buffering. - for (unsigned i = 0; i < 2; ++i) { - if (DiabloUiSurface() == PalSurface) - BltFast(nullptr, nullptr); - RenderPresent(); - DrawCutsceneBackground(); + if (!gbQuietMode) { + assert(ghMainWnd); + + interface_msg_pump(); + ClearScreenBuffer(); + scrollrt_draw_game_screen(); + BlackPalette(); + + // Blit the background once and then free it. + LoadCutsceneBackground(uMsg); + DrawCutsceneBackground(); + if (RenderDirectlyToOutputSurface && IsDoubleBuffered()) { + // Blit twice for triple buffering. + for (unsigned i = 0; i < 2; ++i) { + if (DiabloUiSurface() == PalSurface) + BltFast(nullptr, nullptr); + RenderPresent(); + DrawCutsceneBackground(); + } } - } - FreeCutsceneBackground(); + FreeCutsceneBackground(); - if (IsHardwareCursor()) - SetHardwareCursorVisible(false); + if (IsHardwareCursor()) + SetHardwareCursorVisible(false); - PaletteFadeIn(8); - IncProgress(); - sound_init(); - IncProgress(); + PaletteFadeIn(8); + IncProgress(); + sound_init(); + IncProgress(); + } Player &myPlayer = *MyPlayer; @@ -420,9 +427,11 @@ void ShowProgress(interface_mode uMsg) break; } - assert(ghMainWnd); + if (!gbQuietMode) { + assert(ghMainWnd); - PaletteFadeOut(8); + PaletteFadeOut(8); + } previousHandler = SetEventHandler(previousHandler); assert(previousHandler == DisableInputEventHandler);