fixed "level_nr" style global animations on level selection screen
authorHolger Schemel <info@artsoft.org>
Sat, 9 Dec 2023 17:35:59 +0000 (18:35 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 9 Dec 2023 17:35:59 +0000 (18:35 +0100)
src/anim.c
src/libgame/system.h
src/screens.c
src/tools.c
src/tools.h

index 7f50b28bc84f902145e61c3f0f3b57174b6d1e13..82cb8dd248fc461b09ed6d081119c984ebced894 100644 (file)
@@ -315,7 +315,7 @@ int getAnimationFrame(int num_frames, int delay, int mode, int start_frame,
   }
   else if (mode & ANIM_LEVEL_NR)       // play frames by level number
   {
-    int level_pos = level_nr - leveldir_current->first_level;
+    int level_pos = level_nr - gfx.anim_first_level;
 
     frame = level_pos % num_frames;
   }
index d00c47ba1c3e14d2d1557169024626b0578b7a16..bcfee01ebb66f28c7c2de13e41861bf6bef76bc1 100644 (file)
@@ -1241,6 +1241,7 @@ struct GfxInfo
   char * (*get_token_from_font_function)(int);
 
   int anim_random_frame;
+  int anim_first_level;
 
   void (*draw_busy_anim_function)(boolean);
   void (*draw_global_anim_function)(int, int);
index d48ba4ecf99d7edfc588828899b5c149729b91dc..c919220ef8f8b680792b44d25b9a8564755b9acf 100644 (file)
@@ -1792,6 +1792,9 @@ void DrawMainMenu(void)
   // store valid level series information
   leveldir_last_valid = leveldir_current;
 
+  // store first level of this level set for "level_nr" style animations
+  SetAnimationFirstLevel(leveldir_current->first_level);
+
   // needed if last screen (level choice) changed graphics, sounds or music
   ReloadCustomArtwork(0);
 
index 3f551d63a01b630d6b195716c5d056307bae15eb..4083e77ea1ba9733746632ceeb8bc2c1182dea0c 100644 (file)
@@ -1517,6 +1517,11 @@ void SetRandomAnimationValue(int x, int y)
   gfx.anim_random_frame = GfxRandom[x][y];
 }
 
+void SetAnimationFirstLevel(int first_level)
+{
+  gfx.anim_first_level = first_level;
+}
+
 int getGraphicAnimationFrame(int graphic, int sync_frame)
 {
   // animation synchronized with global frame counter, not move position
index 5f597f423eace0929c54fc8e5fda46884f033e3f..1ccfcea34f2211638ee2d6265194d202f419f9f4 100644 (file)
@@ -131,6 +131,7 @@ void FloodFillLevel(int, int, int, short[MAX_LEV_FIELDX][MAX_LEV_FIELDY], int, i
 void FloodFillLevelExt(int, int, int, int x, int y, short field[x][y], int, int);
 
 void SetRandomAnimationValue(int, int);
+void SetAnimationFirstLevel(int);
 int getGraphicAnimationFrame(int, int);
 int getGraphicAnimationFrameXY(int, int, int);