X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=e56fa695c08339ca4117751f2ffbbba329754c0d;hb=ffda824157292e928e191ac15981652ad745e7c4;hp=720427521a6e3572697e92966501a1c1f05116b0;hpb=1903a68d7b7917ed45655391ecf5aaf995124eff;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 72042752..e56fa695 100644 --- a/src/editor.c +++ b/src/editor.c @@ -122,7 +122,7 @@ #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]);