static void InitLevelInfo(void);
static void InitArtworkInfo(void);
static void InitNetworkServer(void);
+static void InitSoundServer(void);
static void InitSound(void);
static void InitGfx(void);
static void InitGfxBackground(void);
InitArtworkInfo(); /* needed before loading gfx, sound & music */
InitCounter();
- InitSound();
+ InitSoundServer();
InitJoysticks();
InitRND(NEW_RANDOMIZE);
InitLevelInfo();
InitGadgets(); /* needs to know number of level series */
+ InitSound(); /* needs to know current level directory */
InitGfxBackground();
InitToons();
#endif
}
-void InitSound()
+static void ReloadCustomSounds()
{
int i;
- OpenAudio();
+#if 1
+ printf("DEBUG: reloading sounds '%s' ...\n", artwork.sounds_set_current);
+#endif
+
+ FreeAllSounds();
+ InitSoundList(NUM_SOUNDS);
for(i=0; i<NUM_SOUNDS; i++)
- {
- if (!LoadCustomSound(sound_name[i]))
- {
- Error(ERR_WARN, "sounds deactivated");
+ LoadSoundToList(sound_name[i], i);
+}
- audio.sound_available = FALSE;
- audio.loops_available = FALSE;
- audio.sound_enabled = FALSE;
+static void ReloadCustomMusic()
+{
+#if 1
+ printf("DEBUG: reloading music '%s' ...\n", artwork.music_set_current);
+#endif
- return;
- }
- }
+ FreeAllMusic();
- num_bg_loops = LoadCustomMusic();
+ LoadCustomMusic();
+}
+
+static void InitSoundServer()
+{
+ OpenAudio();
+ SetAudioReloadFunctions(ReloadCustomSounds, ReloadCustomMusic);
StartSoundserver();
}
-void InitTileClipmasks()
+static void InitSound()
+{
+ InitReloadSounds(artwork.snd_current->name);
+ InitReloadMusic(artwork.mus_current->name);
+}
+
+static void InitTileClipmasks()
{
#if defined(TARGET_X11)
- GC copy_clipmask_gc;
XGCValues clip_gc_values;
unsigned long clip_gc_valuemask;
#if defined(TARGET_X11_NATIVE)
+ GC copy_clipmask_gc;
+
static struct
{
int start;
int i;
StopSounds();
- FreeSounds(NUM_SOUNDS);
- CloseAudio();
+ FreeAllSounds();
+ FreeAllMusic();
+ CloseAudio(); /* called after freeing sounds (needed for SDL) */
FreeTileClipmasks();
for(i=0; i<NUM_BITMAPS; i++)