+void ReloadCustomArtwork()
+{
+ static char *leveldir_current_name = NULL;
+ static boolean last_override_level_graphics = FALSE;
+ static boolean last_override_level_sounds = FALSE;
+ static boolean last_override_level_music = FALSE;
+
+ if (leveldir_current_name != leveldir_current->name)
+ {
+ /* force reload of custom artwork after new level series was selected */
+ artwork.graphics_set_current_name = NULL;
+ artwork.sounds_set_current_name = NULL;
+ artwork.music_set_current_name = NULL;
+
+ leveldir_current_name = leveldir_current->name;
+ }
+
+ if (artwork.graphics_set_current_name != artwork.gfx_current->name ||
+ last_override_level_graphics != setup.override_level_graphics)
+ {
+ int i;
+
+ ClearRectangle(window, 0, 0, WIN_XSIZE, WIN_YSIZE);
+
+ for(i=0; i<NUM_PICTURES; i++)
+ {
+ DrawInitText(image_filename[i], 150, FC_YELLOW);
+ ReloadCustomImage(pix[i], image_filename[i]);
+ }
+
+ FreeTileClipmasks();
+ InitTileClipmasks();
+ InitGfxBackground();
+
+ SetDoorState(DOOR_OPEN_1 | DOOR_CLOSE_2);
+
+ artwork.graphics_set_current_name = artwork.gfx_current->name;
+ last_override_level_graphics = setup.override_level_graphics;
+ }
+
+ if (artwork.sounds_set_current_name != artwork.snd_current->name ||
+ last_override_level_sounds != setup.override_level_sounds)
+ {
+ InitReloadSounds(artwork.snd_current->name);
+
+ artwork.sounds_set_current_name = artwork.snd_current->name;
+ last_override_level_sounds = setup.override_level_sounds;
+ }
+
+ if (artwork.music_set_current_name != artwork.mus_current->name ||
+ last_override_level_music != setup.override_level_music)
+ {
+ InitReloadMusic(artwork.mus_current->name);
+
+ artwork.music_set_current_name = artwork.mus_current->name;
+ last_override_level_music = setup.override_level_music;
+ }
+}
+