added mouse click events to CE change events (experimental)
[rocksndiamonds.git] / src / files.c
index fd7cfcf4b78e4e143f7a79e60970e2954e6be8b9..fa807e8f323dd0161959467fb6553ca5a703da52 100644 (file)
@@ -1733,6 +1733,9 @@ static void setLevelInfoToDefaults_Level(struct LevelInfo *level)
   // set all bug compatibility flags to "false" => do not emulate this bug
   level->use_action_after_change_bug = FALSE;
 
+  // other flags that may be set due to certain level properties
+  level->has_mouse_events = FALSE;
+
   if (leveldir_current)
   {
     // try to determine better author name than 'anonymous'
@@ -6561,6 +6564,18 @@ static void LoadLevel_InitCustomElements(struct LevelInfo *level)
       element_info[element].ignition_delay = 8;
     }
   }
+
+  // check for custom elements which have mouse click events defined
+  for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++)
+  {
+    int element = EL_CUSTOM_START + i;
+
+    if (HAS_CHANGE_EVENT(element, CE_CLICKED_BY_MOUSE) ||
+       HAS_CHANGE_EVENT(element, CE_PRESSED_BY_MOUSE) ||
+       HAS_CHANGE_EVENT(element, CE_MOUSE_CLICKED_ON_X) ||
+       HAS_CHANGE_EVENT(element, CE_MOUSE_PRESSED_ON_X))
+      level->has_mouse_events = TRUE;
+  }
 }
 
 static void LoadLevel_InitElements(struct LevelInfo *level)
@@ -10309,6 +10324,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;