fixed bug with restarting same menu music on different screens
[rocksndiamonds.git] / src / tools.c
index 9b573f66c2c2bbebb0880b9d882808ce1135d4e0..b07e19d37ee75fd9b92f6835d43513a67fa55f74 100644 (file)
@@ -8398,7 +8398,11 @@ void PlayMenuMusicExt(int music)
 
 void PlayMenuMusic()
 {
-  PlayMenuMusicExt(menu.music[game_status]);
+  char *curr_music = getCurrentlyPlayingMusicFilename();
+  char *next_music = getMusicListEntry(menu.music[game_status])->filename;
+
+  if (!strEqual(curr_music, next_music))
+    PlayMenuMusicExt(menu.music[game_status]);
 }
 
 void PlayMenuSoundsAndMusic()
@@ -8407,9 +8411,24 @@ void PlayMenuSoundsAndMusic()
   PlayMenuMusic();
 }
 
+static void FadeMenuSounds()
+{
+  FadeSounds();
+}
+
+static void FadeMenuMusic()
+{
+  char *curr_music = getCurrentlyPlayingMusicFilename();
+  char *next_music = getMusicListEntry(menu.music[game_status])->filename;
+
+  if (!strEqual(curr_music, next_music))
+    FadeMusic();
+}
+
 void FadeMenuSoundsAndMusic()
 {
-  FadeSoundsAndMusic();
+  FadeMenuSounds();
+  FadeMenuMusic();
 }
 
 void PlaySoundActivating()