fixed initializing color template images before fading out game screen
authorHolger Schemel <holger.schemel@virtion.de>
Tue, 3 Dec 2024 19:58:21 +0000 (20:58 +0100)
committerHolger Schemel <holger.schemel@virtion.de>
Tue, 3 Dec 2024 19:58:38 +0000 (20:58 +0100)
src/game.c
src/game.h
src/init.c

index 5a58b1c2d98170861dbef254f939cf8cc04cc542..b9b8f2f7bab51ba631f4993d3345869716af0b41 100644 (file)
@@ -3723,6 +3723,9 @@ void InitGame(void)
 
   FadeOut(fade_mask);
 
+  if (game.InitColorTemplateImagesNeeded)
+    InitColorTemplateImages();
+
   if (restarting)
   {
     // force restarting global animations displayed during game play
index 0553d8da8208ae7f839bc2a8338c2e22819dfbe3..430e37756ea6d8a06e0a206d18318cbc909dc2ec 100644 (file)
@@ -291,6 +291,8 @@ struct GameInfo
 
   boolean RestartGameRequested;
   boolean InitGameRequested;
+
+  boolean InitColorTemplateImagesNeeded;
 };
 
 struct PlayerInfo
index acb258747e24370c58d5fdc2c194497eb479a271..1355af88d81cf412135b49458c455bb98e58f17d 100644 (file)
@@ -381,15 +381,27 @@ void InitColorTemplateImages(void)
       CreateImgesFromColorTemplate(i, GetColoredBitmapFromTemplate_BD);
 
   InitImageTextures();
+
+  game.InitColorTemplateImagesNeeded = FALSE;
 }
 
 void InitColorTemplateImagesIfNeeded(void)
 {
+  game.InitColorTemplateImagesNeeded = FALSE;
+
   if (program.headless)
     return;
 
-  if (anyImagehasColorTemplate())
-    InitColorTemplateImages();
+  if (!anyImagehasColorTemplate())
+    return;
+
+  game.InitColorTemplateImagesNeeded = TRUE;
+
+  // if game still playing, init color template images later
+  if (game_status == GAME_MODE_PLAYING)
+    return;
+
+  InitColorTemplateImages();
 }
 
 void InitImageTextures(void)