snd_new_identifier = identifier_new;
if (getTreeInfoFromIdentifier(artwork.mus_first, identifier_new) !=
getTreeInfoFromIdentifier(artwork.mus_first, identifier_new))
- artwork.mus_current_identifier = NULL;
+ mus_new_identifier = identifier_new;
leveldir_current_identifier = leveldir_current->identifier;
}
/* custom level artwork configured in level series configuration file
always overrides custom level artwork stored in level series directory
- and (level independant) custom artwork configured in setup menue
- (the path entry is needed to send it to the sound child process) */
+ and (level independant) custom artwork configured in setup menue */
if (leveldir_current->graphics_set != NULL)
- {
- if (leveldir_current->graphics_path)
- free(leveldir_current->graphics_path);
- leveldir_current->graphics_path = NULL;
- leveldir_current->graphics_path =
- getStringCopy(getLevelArtworkDir(artwork.gfx_first));
gfx_new_identifier = leveldir_current->graphics_set;
- }
if (leveldir_current->sounds_set != NULL)
- {
- if (leveldir_current->sounds_path)
- free(leveldir_current->sounds_path);
- leveldir_current->sounds_path = NULL;
- leveldir_current->sounds_path =
- getStringCopy(getLevelArtworkDir(artwork.snd_first));
snd_new_identifier = leveldir_current->sounds_set;
- }
if (leveldir_current->music_set != NULL)
- {
- if (leveldir_current->music_path)
- free(leveldir_current->music_path);
- leveldir_current->music_path = NULL;
- leveldir_current->music_path =
- getStringCopy(getLevelArtworkDir(artwork.mus_first));
mus_new_identifier = leveldir_current->music_set;
- }
if (strcmp(artwork.gfx_current_identifier, gfx_new_identifier) != 0 ||
last_override_level_graphics != setup.override_level_graphics)
{
int i;
+ setLevelArtworkDir(artwork.gfx_first);
+
ClearRectangle(window, 0, 0, WIN_XSIZE, WIN_YSIZE);
for(i=0; i<NUM_PICTURES; i++)
if (strcmp(artwork.snd_current_identifier, snd_new_identifier) != 0 ||
last_override_level_sounds != setup.override_level_sounds)
{
+ /* set artwork path to send it to the sound server process */
+ setLevelArtworkDir(artwork.snd_first);
+
InitReloadSounds(snd_new_identifier);
artwork.snd_current_identifier = snd_new_identifier;
if (strcmp(artwork.mus_current_identifier, mus_new_identifier) != 0 ||
last_override_level_music != setup.override_level_music)
{
+ /* set artwork path to send it to the sound server process */
+ setLevelArtworkDir(artwork.mus_first);
+
InitReloadMusic(mus_new_identifier);
artwork.mus_current_identifier = mus_new_identifier;
return artwork_dir;
}
-char *getLevelArtworkDir(TreeInfo *ti)
+void setLevelArtworkDir(TreeInfo *ti)
{
- char *artwork_path, *artwork_set;
+ char **artwork_path_ptr, *artwork_set;
+ TreeInfo *level_artwork;
if (ti == NULL || leveldir_current == NULL)
- return NOT_AVAILABLE;
-
- artwork_path =
- (ti->type == TREE_TYPE_GRAPHICS_DIR ? leveldir_current->graphics_path :
- ti->type == TREE_TYPE_SOUNDS_DIR ? leveldir_current->sounds_path :
- ti->type == TREE_TYPE_MUSIC_DIR ? leveldir_current->music_path : NULL);
+ return;
- if (artwork_path != NULL)
- return artwork_path;
+ artwork_path_ptr =
+ (ti->type == TREE_TYPE_GRAPHICS_DIR ? &leveldir_current->graphics_path :
+ ti->type == TREE_TYPE_SOUNDS_DIR ? &leveldir_current->sounds_path :
+ &leveldir_current->music_path);
artwork_set =
(ti->type == TREE_TYPE_GRAPHICS_DIR ? leveldir_current->graphics_set :
ti->type == TREE_TYPE_SOUNDS_DIR ? leveldir_current->sounds_set :
- ti->type == TREE_TYPE_MUSIC_DIR ? leveldir_current->music_set : NULL);
+ leveldir_current->music_set);
- if (artwork_set != NULL)
- {
- TreeInfo *level_artwork = getTreeInfoFromIdentifier(ti, artwork_set);
+ if ((level_artwork = getTreeInfoFromIdentifier(ti, artwork_set)) == NULL)
+ return;
- if (level_artwork != NULL)
- return getSetupArtworkDir(level_artwork);
- }
+ if (*artwork_path_ptr != NULL)
+ free(*artwork_path_ptr);
+
+ *artwork_path_ptr = getStringCopy(getSetupArtworkDir(level_artwork));
+}
+
+static char *getLevelArtworkDir(int type)
+{
+ char *artwork_path;
+
+ if (leveldir_current == NULL)
+ return NOT_AVAILABLE;
+
+ artwork_path =
+ (type == TREE_TYPE_GRAPHICS_DIR ? leveldir_current->graphics_path :
+ type == TREE_TYPE_SOUNDS_DIR ? leveldir_current->sounds_path :
+ type == TREE_TYPE_MUSIC_DIR ? leveldir_current->music_path :
+ NOT_AVAILABLE);
- return NOT_AVAILABLE;
+ return artwork_path;
}
char *getLevelFilename(int nr)
if (!setup.override_level_graphics)
{
/* 1st try: look for special artwork configured in level series config */
- filename = getPath2(getLevelArtworkDir(artwork.gfx_first), basename);
+ filename = getPath2(getLevelArtworkDir(TREE_TYPE_GRAPHICS_DIR), basename);
if (fileExists(filename))
return filename;
if (!setup.override_level_sounds)
{
-#if 1
/* 1st try: look for special artwork configured in level series config */
- filename = getPath2(getLevelArtworkDir(artwork.snd_first), basename);
+ filename = getPath2(getLevelArtworkDir(TREE_TYPE_SOUNDS_DIR), basename);
if (fileExists(filename))
return filename;
-#endif
/* 2nd try: look for special artwork in current level series directory */
filename = getPath3(getCurrentLevelDir(), SOUNDS_DIRECTORY, basename);
if (!setup.override_level_music)
{
-#if 1
/* 1st try: look for special artwork configured in level series config */
- directory = getStringCopy(getLevelArtworkDir(artwork.mus_first));
+ directory = getStringCopy(getLevelArtworkDir(TREE_TYPE_MUSIC_DIR));
if (fileExists(directory))
return directory;
-#endif
/* 2nd try: look for special artwork in current level series directory */
directory = getPath2(getCurrentLevelDir(), MUSIC_DIRECTORY);
/* 3rd try: look for special artwork in configured artwork directory */
directory = getStringCopy(getSetupArtworkDir(artwork.mus_current));
-
-#if 1
- printf("DEBUG: checking directory '%s' ...\n", directory);
-#endif
-
if (fileExists(directory))
return directory;