rnd-20030616-1-src
[rocksndiamonds.git] / src / editor.c
index 720427521a6e3572697e92966501a1c1f05116b0..e56fa695c08339ca4117751f2ffbbba329754c0d 100644 (file)
 #define ED_AREA_ELEM_CONTENT4_YPOS     (ED_SETTINGS_YPOS(2) + \
                                         ED_GADGET_DISTANCE - MINI_TILEY)
 /* custom change trigger element */
-#define ED_AREA_ELEM_CONTENT5_XPOS     (29 * MINI_TILEX)
+#define ED_AREA_ELEM_CONTENT5_XPOS     (30 * MINI_TILEX + MINI_TILEX / 2)
 #define ED_AREA_ELEM_CONTENT5_YPOS     (ED_SETTINGS_YPOS(7) + \
                                         ED_GADGET_DISTANCE)
 
@@ -936,6 +936,7 @@ static struct ValueTextInfo options_change_other_action[] =
   { CE_OTHER_COLLECTING,       "collecting"                    },
   { CE_OTHER_PUSHING,          "pushing"                       },
   { CE_OTHER_CHANGING,         "change of"                     },
+  { CE_OTHER_EXPLODING,                "explosion of"                  },
   { -1,                                NULL                            }
 };
 static int value_change_other_action = 0;
@@ -3531,6 +3532,14 @@ static void CopyCustomElementPropertiesToEditor(int element)
     (HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
      HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
      CE_IMPACT);
+
+  /* set change by other element action selectbox help value */
+  value_change_other_action =
+    (HAS_CHANGE_EVENT(element, CE_OTHER_EXPLODING) ? CE_OTHER_EXPLODING :
+     HAS_CHANGE_EVENT(element, CE_OTHER_CHANGING) ? CE_OTHER_CHANGING :
+     HAS_CHANGE_EVENT(element, CE_OTHER_PUSHING) ? CE_OTHER_PUSHING :
+     HAS_CHANGE_EVENT(element, CE_OTHER_COLLECTING) ? CE_OTHER_COLLECTING :
+     CE_OTHER_COLLECTING);
 }
 
 static void CopyCustomElementPropertiesToGame(int element)
@@ -3574,15 +3583,25 @@ static void CopyCustomElementPropertiesToGame(int element)
     custom_element_properties[EP_WALKABLE];
 
   /* set player change event from checkbox and selectbox */
-  custom_element.change.events &= ~CE_TOUCHED_BY_PLAYER;
-  custom_element.change.events &= ~CE_PRESSED_BY_PLAYER;
-  custom_element.change.events &= ~CE_PUSHED_BY_PLAYER;
-  custom_element.change.events |= value_change_player_action;
+  custom_element_change_events[CE_TOUCHED_BY_PLAYER] = FALSE;
+  custom_element_change_events[CE_PRESSED_BY_PLAYER] = FALSE;
+  custom_element_change_events[CE_PUSHED_BY_PLAYER] = FALSE;
+  custom_element_change_events[value_change_player_action] =
+    custom_element_change_events[CE_BY_PLAYER];
 
   /* set player change event from checkbox and selectbox */
-  custom_element.change.events &= ~CE_IMPACT;
-  custom_element.change.events &= ~CE_SMASHED;
-  custom_element.change.events |= value_change_impact_action;
+  custom_element_change_events[CE_IMPACT] = FALSE;
+  custom_element_change_events[CE_SMASHED] = FALSE;
+  custom_element_change_events[value_change_impact_action] =
+    custom_element_change_events[CE_IMPACT_SMASHED];
+
+  /* set other element action change event from checkbox and selectbox */
+  custom_element_change_events[CE_OTHER_COLLECTING] = FALSE;
+  custom_element_change_events[CE_OTHER_PUSHING] = FALSE;
+  custom_element_change_events[CE_OTHER_CHANGING] = FALSE;
+  custom_element_change_events[CE_OTHER_EXPLODING] = FALSE;
+  custom_element_change_events[value_change_other_action] =
+    custom_element_change_events[CE_BY_OTHER];
 
   for (i=0; i < NUM_ELEMENT_PROPERTIES; i++)
     SET_PROPERTY(element, i, custom_element_properties[i]);