fixed bug with forced restart of global animations when restarting game
authorHolger Schemel <info@artsoft.org>
Sat, 9 Sep 2023 14:37:26 +0000 (16:37 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 9 Sep 2023 14:43:51 +0000 (16:43 +0200)
This fixes a bug which occured if the game was restarted (by loading a
tape during the game, or by playing again after a game was lost) and
if a custom artwork set was active that used cross-fading for the game
screen. In this case, global animations displayed during the game were
stopped, but not restarted again,

src/anim.c
src/anim.h
src/game.c

index 710383f3c608c03e4e3832fea3b13e6ab6cc3bbf..bd1847a9a72cb3cef58bb53bba49d8ba44129004 100644 (file)
@@ -2164,6 +2164,11 @@ void RestartGlobalAnimsByStatus(int status)
   global.anim_status = anim_status_last;
 }
 
+void SetAnimStatusBeforeFading(int status)
+{
+  anim_status_last_before_fading = status;
+}
+
 boolean HandleGlobalAnimClicks(int mx, int my, int button, boolean force_click)
 {
   static boolean click_consumed = FALSE;
index 0bde9a0bfec7f3063c53d04bbb2a21f21c9a20da..992f50106dbe0bb028903b7ef3233c11abaaedf1 100644 (file)
@@ -20,6 +20,7 @@ void InitGlobalAnimations(void);
 void DrawGlobalAnimations(int, int);
 
 void RestartGlobalAnimsByStatus(int);
+void SetAnimStatusBeforeFading(int);
 
 boolean HandleGlobalAnimClicks(int, int, int, boolean);
 void HandleGlobalAnimEventByElementChange(int, int, int, int);
index 8cb99586ffbcd20c26e3aca5874a012ceb58e1cb..a025b4b9d65835bdfe125859d60f30a2f1e1bbb0 100644 (file)
@@ -3629,6 +3629,10 @@ void InitGame(void)
     // force restarting global animations displayed during game play
     RestartGlobalAnimsByStatus(GAME_MODE_PSEUDO_RESTARTING);
 
+    // this is required for "transforming" fade modes like cross-fading
+    // (else global animations will be stopped, but not restarted here)
+    SetAnimStatusBeforeFading(GAME_MODE_PSEUDO_RESTARTING);
+
     SetGameStatus(GAME_MODE_PLAYING);
   }