X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=136abe6a8717dea9a65db8d3c2358a543645d629;hb=ac9feee5631d3725a6d7b75b065c8be33a22d4b5;hp=afa406a28c3eb8d3ca98d0e7527c538556ec4940;hpb=649437536a808e88d5fb1d35cfb74615a3b9e6a0;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index afa406a2..136abe6a 100644 --- a/src/init.c +++ b/src/init.c @@ -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");