X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finit.c;h=6ef48aee97da2ced884db8f8a24a540967fe1740;hb=401f78b66d66488fe465945bef36b10faa6b55ef;hp=5d862c6f3689a860c6e6f51ecd23335a123eba30;hpb=1d32d46e52cc55720c4f191436514aca4a579e94;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 5d862c6f..6ef48aee 100644 --- a/src/init.c +++ b/src/init.c @@ -5758,71 +5758,94 @@ static boolean CheckArtworkConfigForCustomElements(char *filename) return redefined_ce_found; } -static void InitOverrideArtwork() +static boolean CheckArtworkTypeForRedefinedCustomElements(int type) { - boolean init_override_from_setup = TRUE; - - gfx.override_level_graphics = FALSE; - gfx.override_level_sounds = FALSE; - gfx.override_level_music = FALSE; - - if (setup.auto_override_artwork) - { - char *filename_base, *filename_local; - boolean redefined_ce_found = FALSE; + char *filename_base, *filename_local; + boolean redefined_ce_found = FALSE; - setLevelArtworkDir(artwork.gfx_first); + setLevelArtworkDir(ARTWORK_FIRST_NODE(artwork, type)); #if 0 - printf("::: leveldir_current->identifier == '%s'\n", - leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier); - printf("::: leveldir_current->graphics_path == '%s'\n", - leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path); - printf("::: leveldir_current->graphics_set == '%s'\n", - leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set); - printf("::: getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'\n", - leveldir_current == NULL ? "[NULL]" : LEVELDIR_ARTWORK_SET(leveldir_current, ARTWORK_TYPE_GRAPHICS)); + printf("::: leveldir_current->identifier == '%s'\n", + leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier); + printf("::: leveldir_current->graphics_path == '%s'\n", + leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path); + printf("::: leveldir_current->graphics_set == '%s'\n", + leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set); + printf("::: getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'\n", + leveldir_current == NULL ? "[NULL]" : + LEVELDIR_ARTWORK_SET(leveldir_current, type)); #endif - /* first look for special artwork configured in level series config */ - filename_base = getCustomArtworkLevelConfigFilename(ARTWORK_TYPE_GRAPHICS); + /* first look for special artwork configured in level series config */ + filename_base = getCustomArtworkLevelConfigFilename(type); #if 0 - printf("::: filename_base == '%s'\n", filename_base); + printf("::: filename_base == '%s'\n", filename_base); #endif - if (fileExists(filename_base)) - redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_base); + if (fileExists(filename_base)) + redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_base); - filename_local = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); + filename_local = getCustomArtworkConfigFilename(type); #if 0 - printf("::: filename_local == '%s'\n", filename_local); + printf("::: filename_local == '%s'\n", filename_local); #endif - if (filename_local != NULL && !strEqual(filename_base, filename_local)) - redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_local); + if (filename_local != NULL && !strEqual(filename_base, filename_local)) + redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_local); #if 0 - printf("::: redefined_ce_found == %d\n", redefined_ce_found); + printf("::: redefined_ce_found == %d\n", redefined_ce_found); #endif - if (!redefined_ce_found) - { - gfx.override_level_graphics = TRUE; - gfx.override_level_sounds = TRUE; - gfx.override_level_music = TRUE; + return redefined_ce_found; +} - init_override_from_setup = FALSE; - } - } +static void InitOverrideArtwork() +{ + boolean redefined_ce_found = FALSE; + + /* to check if this level set redefines any CEs, do not use overriding */ + gfx.override_level_graphics = FALSE; + gfx.override_level_sounds = FALSE; + gfx.override_level_music = FALSE; + + /* now check if this level set has definitions for custom elements */ + if (setup.override_level_graphics == AUTO || + setup.override_level_sounds == AUTO || + setup.override_level_music == AUTO) + redefined_ce_found = + (CheckArtworkTypeForRedefinedCustomElements(ARTWORK_TYPE_GRAPHICS) | + CheckArtworkTypeForRedefinedCustomElements(ARTWORK_TYPE_SOUNDS) | + CheckArtworkTypeForRedefinedCustomElements(ARTWORK_TYPE_MUSIC)); - if (init_override_from_setup) +#if 0 + printf("::: redefined_ce_found == %d\n", redefined_ce_found); +#endif + + if (redefined_ce_found) { - gfx.override_level_graphics = setup.override_level_graphics; - gfx.override_level_sounds = setup.override_level_sounds; - gfx.override_level_music = setup.override_level_music; + /* this level set has CE definitions: change "AUTO" to "FALSE" */ + gfx.override_level_graphics = (setup.override_level_graphics == TRUE); + gfx.override_level_sounds = (setup.override_level_sounds == TRUE); + gfx.override_level_music = (setup.override_level_music == TRUE); } + else + { + /* this level set has no CE definitions: change "AUTO" to "TRUE" */ + gfx.override_level_graphics = (setup.override_level_graphics != FALSE); + gfx.override_level_sounds = (setup.override_level_sounds != FALSE); + gfx.override_level_music = (setup.override_level_music != FALSE); + } + +#if 0 + printf("::: => %d, %d, %d\n", + gfx.override_level_graphics, + gfx.override_level_sounds, + gfx.override_level_music); +#endif } static char *getNewArtworkIdentifier(int type)