fixed bug with not recognizing ".mode_loop: false" for music
[rocksndiamonds.git] / src / anim.c
index 81441829e8694ef2b0fb8f44b27cb8443fe45e9e..1623cdc4685b6da6d5c8ae52c862e3256e41aa56 100644 (file)
@@ -14,6 +14,8 @@
 #include "anim.h"
 #include "main.h"
 #include "tools.h"
+#include "events.h"
+#include "screens.h"
 
 
 /* values for global toon animation definition */
@@ -915,7 +917,10 @@ static void PlayGlobalAnimMusic(struct GlobalAnimPartControlInfo *part)
   if (!setup.sound_music)
     return;
 
-  PlayMusic(music);
+  if (IS_LOOP_MUSIC(music))
+    PlayMusicLoop(music);
+  else
+    PlayMusic(music);
 
 #if 0
   printf("::: PLAY MUSIC %d.%d.%d: %d\n",
@@ -1451,7 +1456,8 @@ static boolean DoGlobalAnim_EventAction(struct GlobalAnimPartControlInfo *part)
     return FALSE;
 
   boolean action_executed = (DoGadgetAction(anim_event_action) ||
-                            DoScreenAction(anim_event_action));
+                            DoScreenAction(anim_event_action) ||
+                            DoKeysymAction(anim_event_action));
 
   // check if further actions are allowed to be executed
   if (part->control_info.style & STYLE_MULTIPLE_ACTIONS)
@@ -1543,7 +1549,8 @@ static boolean InitGlobalAnim_Clicked(int mx, int my, boolean clicked)
          if (!any_event_action && DoGlobalAnim_EventAction(part))
            any_event_action = TRUE;
 
-         any_part_clicked = TRUE;
+         // determine if mouse clicks should be blocked from other animations
+         any_part_clicked = clickConsumed(part);
 
          if (isClickablePart(part, ANIM_EVENT_SELF))
          {