X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=6ef48aee97da2ced884db8f8a24a540967fe1740;hb=401f78b66d66488fe465945bef36b10faa6b55ef;hp=c0afcfff25956f44b715ee1ae9934ed64aa2af04;hpb=9f907eef20bc6b488473d29310d2384eee3619da;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index c0afcfff..6ef48aee 100644 --- a/src/init.c +++ b/src/init.c @@ -5384,6 +5384,7 @@ static void InitArtworkConfig() static void InitMixer() { OpenAudio(); + StartMixer(); } @@ -5601,7 +5602,7 @@ static void InitLevelInfo() LoadLevelSetup_SeriesInfo(); /* last played level info */ } -void InitLevelArtworkInfo() +static void InitLevelArtworkInfo() { LoadLevelArtworkInfo(); } @@ -5610,8 +5611,30 @@ static void InitImages() { print_timestamp_init("InitImages"); +#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)); +#endif + setLevelArtworkDir(artwork.gfx_first); +#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)); +#endif + #if 0 printf("::: InitImages for '%s' ['%s', '%s'] ['%s', '%s']\n", leveldir_current->identifier, @@ -5712,6 +5735,8 @@ static boolean CheckArtworkConfigForCustomElements(char *filename) SetupFileHash *setup_file_hash; boolean redefined_ce_found = FALSE; + /* !!! CACHE THIS BY USING HASH 'filename' => 'true/false' !!! */ + if ((setup_file_hash = loadSetupFileHash(filename)) != NULL) { BEGIN_HASH_ITERATION(setup_file_hash, itr) @@ -5733,50 +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; + char *filename_base, *filename_local; + boolean redefined_ce_found = FALSE; - gfx.override_level_graphics = FALSE; - gfx.override_level_sounds = FALSE; - gfx.override_level_music = FALSE; + setLevelArtworkDir(ARTWORK_FIRST_NODE(artwork, type)); - if (setup.auto_override_artwork) - { - char *filename_base, *filename_local; - boolean redefined_ce_found = FALSE; +#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, 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 (fileExists(filename_base)) - redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_base); +#if 0 + printf("::: filename_base == '%s'\n", filename_base); +#endif - filename_local = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); + if (fileExists(filename_base)) + redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_base); - if (filename_local != NULL && !strEqual(filename_base, filename_local)) - redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_local); + filename_local = getCustomArtworkConfigFilename(type); #if 0 - printf("::: redefined_ce_found == %d\n", redefined_ce_found); + printf("::: filename_local == '%s'\n", filename_local); #endif - if (!redefined_ce_found) - { - gfx.override_level_graphics = TRUE; - gfx.override_level_sounds = TRUE; - gfx.override_level_music = TRUE; + if (filename_local != NULL && !strEqual(filename_base, filename_local)) + redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_local); - init_override_from_setup = FALSE; - } - } +#if 0 + printf("::: redefined_ce_found == %d\n", redefined_ce_found); +#endif - if (init_override_from_setup) + return redefined_ce_found; +} + +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 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) @@ -6081,6 +6150,9 @@ void OpenAll() InitLevelArtworkInfo(); print_timestamp_time("InitLevelArtworkInfo"); + InitOverrideArtwork(); /* needs to know current level directory */ + print_timestamp_time("InitOverrideArtwork"); + InitImages(); /* needs to know current level directory */ print_timestamp_time("InitImages");