added option to generally set global animations to block clicks
authorHolger Schemel <info@artsoft.org>
Wed, 8 Apr 2020 12:15:40 +0000 (14:15 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 19 May 2020 16:20:02 +0000 (18:20 +0200)
src/anim.c
src/files.c
src/libgame/system.h

index 3c19176fc62aa7b7ad1e5f6926319035fdc5d2eb..e7a308601ddaffe2b8bc353c69ae75f63439e748 100644 (file)
@@ -1146,6 +1146,11 @@ static boolean isClickedPart(struct GlobalAnimPartControlInfo *part,
   return TRUE;
 }
 
+static boolean clickBlocked(struct GlobalAnimPartControlInfo *part)
+{
+  return (part->control_info.style & STYLE_BLOCK ? TRUE : FALSE);
+}
+
 static boolean clickConsumed(struct GlobalAnimPartControlInfo *part)
 {
   return (part->control_info.style & STYLE_PASSTHROUGH ? FALSE : TRUE);
@@ -1874,6 +1879,9 @@ static boolean InitGlobalAnim_Clicked(int mx, int my, int clicked_event)
            click_consumed |= clickConsumed(part);
          }
 
+         // determine if mouse clicks should be blocked by this animation
+         click_consumed |= clickBlocked(part);
+
          // check if this click is defined to trigger other animations
          InitGlobalAnim_Triggered(part, &click_consumed, &any_event_action,
                                   ANIM_EVENT_CLICK, "CLICK");
index fd7cfcf4b78e4e143f7a79e60970e2954e6be8b9..54835e281f2136a93ba98abcf09ad7b074e122c8 100644 (file)
@@ -10309,6 +10309,9 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
     if (string_has_parameter(value, "reverse"))
       result |= STYLE_REVERSE;
 
+    if (string_has_parameter(value, "block_clicks"))
+      result |= STYLE_BLOCK;
+
     if (string_has_parameter(value, "passthrough_clicks"))
       result |= STYLE_PASSTHROUGH;
 
index a949914ee1cbb900faa42aab4e71da903d54fa1a..f70b6b5fdfc950b198fd79911ed2d8ae3052331a 100644 (file)
 #define STYLE_REVERSE          (1 << 2)
 
 // values for special event handling style (used for global animation)
-#define STYLE_PASSTHROUGH      (1 << 3)
-#define STYLE_MULTIPLE_ACTIONS (1 << 4)
+#define STYLE_BLOCK            (1 << 3)
+#define STYLE_PASSTHROUGH      (1 << 4)
+#define STYLE_MULTIPLE_ACTIONS (1 << 5)
 
 #define STYLE_DEFAULT          STYLE_NONE