added initially setting artwork identifier
[rocksndiamonds.git] / src / init.c
index afa406a28c3eb8d3ca98d0e7527c538556ec4940..136abe6a8717dea9a65db8d3c2358a543645d629 100644 (file)
@@ -1964,8 +1964,9 @@ static void InitGraphicCompatibilityInfo(void)
     ClearRectangle(bitmap, 514, 66, 32, 480);
   }
 
-  // special compatibility handling for "Jue" (2007) graphics set
-  if (strPrefix(leveldir_current->graphics_set, "jue0"))
+  // special compatibility handling for "Jue" graphics sets (2007 and 2019)
+  boolean supports_score_info = (menu.draw_xoffset[GAME_MODE_SCOREINFO] != 0);
+  if (strPrefix(leveldir_current->graphics_set, "jue") && !supports_score_info)
   {
     int font_title[] =
     {
@@ -2001,9 +2002,10 @@ static void InitGraphicCompatibilityInfo(void)
     {
       for (j = 0; j < 2; j++)
       {
+       boolean jue0 = strEqual(leveldir_current->graphics_set, "jue0");
        int font_nr = (j == 0 ? font_text[i] : FONT_ACTIVE(font_text[i]));
        int font_bitmap_id = font_info[font_nr].special_bitmap_id[mode_old];
-       int font_yoffset = 10;
+       int font_yoffset = (jue0 ? 10 : 5);
 
        gfx.font_bitmap_info[font_bitmap_id].draw_yoffset = font_yoffset;
       }
@@ -6181,7 +6183,7 @@ static void InitOverrideArtwork(void)
 #endif
 }
 
-static char *getNewArtworkIdentifier(int type)
+static char *setNewArtworkIdentifier(int type)
 {
   static char *last_leveldir_identifier[3] = { NULL, NULL, NULL };
   static char *last_artwork_identifier[3] = { NULL, NULL, NULL };
@@ -6246,6 +6248,7 @@ static char *getNewArtworkIdentifier(int type)
   // (we cannot compare string pointers here, so copy string content itself)
   setString(&last_artwork_identifier[type], artwork_current_identifier);
 
+  // ---------- set new artwork identifier ----------
   *(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type)) = artwork_current_identifier;
 
   // ---------- do not reload directly after starting -------------------------
@@ -6257,6 +6260,13 @@ static char *getNewArtworkIdentifier(int type)
   return artwork_new_identifier;
 }
 
+static void InitArtworkIdentifier(void)
+{
+  setNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
+  setNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
+  setNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
+}
+
 void ReloadCustomArtwork(int force_reload)
 {
   int last_game_status = game_status;  // save current game status
@@ -6273,9 +6283,9 @@ void ReloadCustomArtwork(int force_reload)
   AdjustGraphicsForEMC();
   AdjustSoundsForEMC();
 
-  gfx_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
-  snd_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
-  mus_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
+  gfx_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
+  snd_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
+  mus_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
 
   reload_needed = (gfx_new_identifier != NULL || force_reload_gfx ||
                   snd_new_identifier != NULL || force_reload_snd ||
@@ -6299,6 +6309,8 @@ void ReloadCustomArtwork(int force_reload)
 
   UPDATE_BUSY_STATE();
 
+  InitMissingFileHash();
+
   if (gfx_new_identifier != NULL || force_reload_gfx)
   {
 #if 0
@@ -6435,6 +6447,8 @@ void OpenAll(void)
   InitSimpleRandom(NEW_RANDOMIZE);
   InitBetterRandom(NEW_RANDOMIZE);
 
+  InitMissingFileHash();
+
   print_timestamp_time("[init global stuff]");
 
   InitSetup();
@@ -6502,6 +6516,9 @@ void OpenAll(void)
   InitOverrideArtwork();       // needs to know current level directory
   print_timestamp_time("InitOverrideArtwork");
 
+  InitArtworkIdentifier();     // needs to know current level directory
+  print_timestamp_time("InitArtworkIdentifier");
+
   InitImages();                        // needs to know current level directory
   print_timestamp_time("InitImages");