From a0bba9b152c3d2e242a9cf81c3661c323ca7008a Mon Sep 17 00:00:00 2001 From: obligaron Date: Sat, 22 Oct 2022 13:27:15 +0200 Subject: [PATCH] Only color cycle animations if game logic is processed --- Source/diablo.cpp | 9 +++++---- Source/diablo.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index 668b19f99..7e03516b1 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -766,9 +766,9 @@ void RunGameLoop(interface_mode uMsg) continue; } - diablo_color_cyc_logic(); multi_process_network_packets(); - game_loop(gbGameLoopStartup); + if (game_loop(gbGameLoopStartup)) + diablo_color_cyc_logic(); gbGameLoopStartup = false; if (drawGame) DrawAndBlit(); @@ -2819,14 +2819,14 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir) pcursplr = -1; } -void game_loop(bool bStartup) +bool game_loop(bool bStartup) { uint16_t wait = bStartup ? sgGameInitInfo.nTickRate * 3 : 3; for (unsigned i = 0; i < wait; i++) { if (!multi_handle_delta()) { TimeoutCursor(true); - break; + return false; } TimeoutCursor(false); GameLogic(); @@ -2835,6 +2835,7 @@ void game_loop(bool bStartup) if (!gbRunGame || !gbIsMultiplayer || demo::IsRunning() || demo::IsRecording() || !nthread_has_500ms_passed()) break; } + return true; } void diablo_color_cyc_logic() diff --git a/Source/diablo.h b/Source/diablo.h index 517271ef9..d882008db 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -99,7 +99,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir); /** * @param bStartup Process additional ticks before returning */ -void game_loop(bool bStartup); +bool game_loop(bool bStartup); void diablo_color_cyc_logic(); /* rdata */