fixed playing loop sounds when using native BD game engine
authorHolger Schemel <holger.schemel@virtion.de>
Sat, 14 Dec 2024 17:18:25 +0000 (18:18 +0100)
committerHolger Schemel <holger.schemel@virtion.de>
Sat, 14 Dec 2024 17:19:43 +0000 (18:19 +0100)
When using the native BD game engine, but not using the native BD
sound engine, loop sounds were not played anymore due to a bug with
off-playfield sound positions.

This bug was introduced by commit 386e26cf.

src/game_bd/bd_sound.c

index 55654f2c7dd296fb3a6099a051e82143a41613d8..794610c4a97573670889fcfdfd76edf58b0fabf4 100644 (file)
@@ -478,9 +478,12 @@ static void gd_sound_info_to_play(int channel, int x, int y, int element, int so
 // plays sound in a cave
 void gd_sound_play(GdCave *cave, GdSound sound, GdElement element, int x, int y)
 {
-  // fix wrap-around cave positions
-  x = (x + cave->w) % cave->w;
-  y = (y + cave->h) % cave->h;
+  if (x != -1 || y != -1)
+  {
+    // fix wrap-around cave positions
+    x = (x + cave->w) % cave->w;
+    y = (y + cave->h) % cave->h;
+  }
 
   if (sound == GD_S_NONE)
     return;