rnd-20020424-2-src
[rocksndiamonds.git] / src / init.c
index 69008db67a887ed0e384734734f3c99ca2f9c24f..0a52cc63033eaf3e247f49abfdc2f7ee60e7d4b8 100644 (file)
@@ -151,29 +151,56 @@ void InitNetworkServer()
 #endif
 }
 
-void InitSound()
+static void ReloadCustomSounds()
 {
   int i;
 
-  OpenAudio();
+  printf("DEBUG: reloading sounds '%s' [%d] ...\n",
+        artwork.sounds_set_current, audio.soundserver_pid);
 
+#if 1
+  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);
+#endif
+}
 
-      audio.sound_available = FALSE;
-      audio.loops_available = FALSE;
-      audio.sound_enabled = FALSE;
+static void ReloadCustomMusic()
+{
+  printf("DEBUG: reloading music '%s' [%d] ...\n",
+        artwork.music_set_current, audio.soundserver_pid);
 
-      return;
-    }
-  }
+#if 1
+  FreeAllMusic();
 
-  num_bg_loops = LoadMusic();
+  LoadCustomMusic();
+#endif
+}
+
+void InitSound()
+{
+  int i;
+
+  OpenAudio();
+  SetAudioReloadFunctions(ReloadCustomSounds, ReloadCustomMusic);
+
+#if 1
+  InitSoundList(NUM_SOUNDS);
+
+  for(i=0; i<NUM_SOUNDS; i++)
+    LoadSoundToList(sound_name[i], i);
+
+  LoadCustomMusic();
+#endif
 
   StartSoundserver();
+
+#if 0
+  InitReloadSounds(artwork.snd_current->name);
+  InitReloadMusic(artwork.mus_current->name);
+#endif
 }
 
 void InitTileClipmasks()
@@ -1602,8 +1629,9 @@ void CloseAllAndExit(int exit_value)
   int i;
 
   StopSounds();
-  FreeSounds(NUM_SOUNDS);
   CloseAudio();
+  FreeAllSounds();
+  FreeAllMusic();
 
   FreeTileClipmasks();
   for(i=0; i<NUM_BITMAPS; i++)