#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 25)
#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 26)
#define GADGET_ID_CUSTOM_ACCESSIBLE (GADGET_ID_CHECKBUTTON_FIRST + 27)
-#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 28)
-#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 29)
-#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 30)
-#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 31)
-#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 32)
-#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 33)
-#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 34)
-#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 35)
-#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 36)
-#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 37)
+#define GADGET_ID_CUSTOM_GRAV_REACHABLE (GADGET_ID_CHECKBUTTON_FIRST + 28)
+#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 29)
+#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 30)
+#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 32)
+#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 33)
+#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 34)
+#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 35)
+#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 36)
+#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 37)
+#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 38)
/* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 38)
+#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 39)
#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \
ED_NUM_ELEMENTLIST_BUTTONS - 1)
#define ED_COUNTER_ID_LEVEL_LAST ED_COUNTER_ID_LEVEL_RANDOM
#define ED_COUNTER_ID_CUSTOM1_FIRST ED_COUNTER_ID_CUSTOM_SCORE
-#define ED_COUNTER_ID_CUSTOM1_LAST ED_COUNTER_ID_MOVE_DELAY_RND
-#define ED_COUNTER_ID_CUSTOM2_FIRST ED_COUNTER_ID_EXPLOSION_DELAY
+#define ED_COUNTER_ID_CUSTOM1_LAST ED_COUNTER_ID_DROP_DELAY_RND
+#define ED_COUNTER_ID_CUSTOM2_FIRST ED_COUNTER_ID_MOVE_DELAY_FIX
#define ED_COUNTER_ID_CUSTOM2_LAST ED_COUNTER_ID_IGNITION_DELAY
#define ED_COUNTER_ID_CUSTOM_FIRST ED_COUNTER_ID_CUSTOM1_FIRST
#define ED_COUNTER_ID_CUSTOM_LAST ED_COUNTER_ID_CUSTOM2_LAST
#define ED_SELECTBOX_ID_LEVEL_LAST ED_SELECTBOX_ID_TIME_OR_STEPS
#define ED_SELECTBOX_ID_CUSTOM1_FIRST ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE
-#define ED_SELECTBOX_ID_CUSTOM1_LAST ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE
-#define ED_SELECTBOX_ID_CUSTOM2_FIRST ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS
+#define ED_SELECTBOX_ID_CUSTOM1_LAST ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION
+#define ED_SELECTBOX_ID_CUSTOM2_FIRST ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN
#define ED_SELECTBOX_ID_CUSTOM2_LAST ED_SELECTBOX_ID_CUSTOM_EXPLOSION_TYPE
#define ED_SELECTBOX_ID_CUSTOM_FIRST ED_SELECTBOX_ID_CUSTOM1_FIRST
#define ED_SELECTBOX_ID_CUSTOM_LAST ED_SELECTBOX_ID_CUSTOM2_LAST
#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 14
#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE 15
#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE 16
-#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 17
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 18
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 19
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 20
-#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 21
-#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 22
-#define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 23
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE 24
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 25
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 26
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 27
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 28
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY 29
-#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 30
-#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 31
-#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 32
-#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 33
-#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 34
-#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 35
-
-#define ED_NUM_CHECKBUTTONS 36
+#define ED_CHECKBUTTON_ID_CUSTOM_GRAV_REACHABLE 17
+#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 18
+#define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 19
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 20
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 21
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 22
+#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 23
+#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 24
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE 25
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 26
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 27
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 28
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 29
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY 30
+#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 31
+#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 32
+#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 33
+#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 34
+#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 35
+#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 36
+
+#define ED_NUM_CHECKBUTTONS 37
#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_DOUBLE_SPEED
#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
#define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC
-#define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE
-#define ED_CHECKBUTTON_ID_CUSTOM2_FIRST ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL
+#define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE
+#define ED_CHECKBUTTON_ID_CUSTOM2_FIRST ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE
#define ED_CHECKBUTTON_ID_CUSTOM2_LAST ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT
#define ED_CHECKBUTTON_ID_CUSTOM_FIRST ED_CHECKBUTTON_ID_CUSTOM1_FIRST
#define ED_CHECKBUTTON_ID_CUSTOM_LAST ED_CHECKBUTTON_ID_CUSTOM2_LAST
&custom_element.drop_delay_random,
NULL, "+random", NULL
},
+
+ /* ---------- element settings: configure 2 (custom elements) ------------ */
+
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(13),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(5),
0, 999,
GADGET_ID_MOVE_DELAY_FIX_DOWN, GADGET_ID_MOVE_DELAY_FIX_UP,
GADGET_ID_MOVE_DELAY_FIX_TEXT, GADGET_ID_NONE,
NULL, "move delay", NULL
},
{
- -1, ED_SETTINGS_YPOS(13),
+ -1, ED_SETTINGS_YPOS(5),
0, 999,
GADGET_ID_MOVE_DELAY_RND_DOWN, GADGET_ID_MOVE_DELAY_RND_UP,
GADGET_ID_MOVE_DELAY_RND_TEXT, GADGET_ID_MOVE_DELAY_FIX_UP,
&custom_element.move_delay_random,
NULL, "+random", NULL
},
-
- /* ---------- element settings: configure 2 (custom elements) ------------ */
-
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(4),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(12),
0, 255,
GADGET_ID_EXPLOSION_DELAY_DOWN, GADGET_ID_EXPLOSION_DELAY_UP,
GADGET_ID_EXPLOSION_DELAY_TEXT, GADGET_ID_NONE,
NULL, "explosion delay", NULL
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(5),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(13),
0, 255,
GADGET_ID_IGNITION_DELAY_DOWN, GADGET_ID_IGNITION_DELAY_UP,
GADGET_ID_IGNITION_DELAY_TEXT, GADGET_ID_NONE,
&custom_element.walk_to_action,
NULL, NULL, "diggable/collectible/pushable"
},
+
+ /* ---------- element settings: configure 2 (custom elements) ----------- */
+
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(9),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(1),
GADGET_ID_CUSTOM_MOVE_PATTERN, GADGET_ID_NONE,
-1,
options_move_pattern,
&custom_element.move_pattern,
- "can move", NULL, "element move direction"
+ "can move", NULL, "element move pattern"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(10),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(2),
GADGET_ID_CUSTOM_MOVE_DIRECTION, GADGET_ID_NONE,
-1,
options_move_direction,
"starts moving", NULL, "initial element move direction"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(12),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(4),
GADGET_ID_CUSTOM_MOVE_STEPSIZE, GADGET_ID_NONE,
-1,
options_move_stepsize,
"move/fall speed", NULL, "speed of element movement"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(11),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(3),
GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE, GADGET_ID_NONE,
-1,
options_move_leave_type,
"can dig: can", ":", "leave behind or change element"
},
{
- -1, ED_SETTINGS_YPOS(13),
+ -1, ED_SETTINGS_YPOS(7),
GADGET_ID_CUSTOM_SMASH_TARGETS, GADGET_ID_CUSTOM_CAN_SMASH,
-1,
options_smash_targets,
"can smash", NULL, "elements that can be smashed"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(14),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(8),
GADGET_ID_CUSTOM_SLIPPERY_TYPE, GADGET_ID_NONE,
-1,
options_slippery_type,
&custom_element.slippery_type,
"slippery", NULL, "where other elements fall down"
},
-
- /* ---------- element settings: configure 2 (custom elements) ----------- */
-
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(1),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(9),
GADGET_ID_CUSTOM_DEADLINESS, GADGET_ID_NONE,
-1,
options_deadliness,
"deadly when", NULL, "deadliness of element"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(2),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_EXPLOSION_TYPE, GADGET_ID_NONE,
-1,
options_explosion_type,
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
GADGET_ID_CUSTOM_USE_GRAPHIC, GADGET_ID_NONE,
&custom_element.use_gfx_element,
- NULL, "use graphic of element:", "use graphic for custom element"
+ NULL, "use graphic/sound of element:", "use existing graphic and sound"
},
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(2),
&custom_element_properties[EP_ACCESSIBLE],
NULL, NULL, "player can walk to or pass this field"
},
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
+ GADGET_ID_CUSTOM_GRAV_REACHABLE, GADGET_ID_NONE,
+ &custom_element_properties[EP_GRAVITY_REACHABLE],
+ NULL, "reachable despite gravity", "player can walk/dig despite gravity"
+ },
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(5),
GADGET_ID_CUSTOM_WALK_TO_OBJECT, GADGET_ID_NONE,
},
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(9),
+ GADGET_ID_CUSTOM_INDESTRUCTIBLE, GADGET_ID_NONE,
+ &custom_element_properties[EP_INDESTRUCTIBLE],
+ NULL, "indestructible", "element is indestructible"
+ },
+
+ /* ---------- element settings: configure 2 (custom elements) ----------- */
+
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
GADGET_ID_CUSTOM_CAN_MOVE, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_MOVE],
- NULL, NULL, "element can move in some direction"
+ NULL, NULL, "element can move with some pattern"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(13),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(7),
GADGET_ID_CUSTOM_CAN_FALL, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_FALL],
NULL, "can fall", "element can fall down"
},
{
- -1, ED_SETTINGS_YPOS(13),
+ -1, ED_SETTINGS_YPOS(7),
GADGET_ID_CUSTOM_CAN_SMASH, GADGET_ID_CUSTOM_CAN_FALL,
&custom_element_properties[EP_CAN_SMASH],
" ", NULL, "element can smash other elements"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(14),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(8),
GADGET_ID_CUSTOM_SLIPPERY, GADGET_ID_NONE,
&custom_element_properties[EP_SLIPPERY],
NULL, NULL, "other elements can fall down from it"
},
-
- /* ---------- element settings: configure 2 (custom elements) ----------- */
-
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(9),
GADGET_ID_CUSTOM_DEADLY, GADGET_ID_NONE,
&custom_element_properties[EP_DEADLY],
NULL, NULL, "element can kill the player"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(6),
- GADGET_ID_CUSTOM_INDESTRUCTIBLE, GADGET_ID_NONE,
- &custom_element_properties[EP_INDESTRUCTIBLE],
- NULL, "indestructible", "element is indestructible"
- },
- {
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(2),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_CAN_EXPLODE, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_EXPLODE],
NULL, NULL, "element can explode"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(3),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(11),
GADGET_ID_CUSTOM_EXPLODE_FIRE, GADGET_ID_NONE,
&custom_element_properties[EP_EXPLODES_BY_FIRE],
NULL, "by fire", "element can explode by fire/explosion"
},
{
- -1, ED_SETTINGS_YPOS(3),
+ -1, ED_SETTINGS_YPOS(11),
GADGET_ID_CUSTOM_EXPLODE_SMASH, GADGET_ID_CUSTOM_EXPLODE_FIRE,
&custom_element_properties[EP_EXPLODES_SMASHED],
" ", "smashed", "element can explode when smashed"
},
{
- -1, ED_SETTINGS_YPOS(3),
+ -1, ED_SETTINGS_YPOS(11),
GADGET_ID_CUSTOM_EXPLODE_IMPACT, GADGET_ID_CUSTOM_EXPLODE_SMASH,
&custom_element_properties[EP_EXPLODES_IMPACT],
" ", "impact", "element can explode on impact"
"content:", NULL, NULL
},
+ /* ---------- element settings: configure 1 (custom elements) ----------- */
+
/* ---------- custom graphic --------------------------------------------- */
{
NULL, NULL, NULL
},
+ /* ---------- element settings: configure 2 (custom elements) ----------- */
+
/* ---------- custom content (when exploding) ---------------------------- */
{
- -1, ED_AREA_3X3_SETTINGS_YPOS(2),
+ -1, ED_AREA_3X3_SETTINGS_YPOS(10),
3, 3,
GADGET_ID_CUSTOM_CONTENT, GADGET_ID_NONE, /* align three rows */
"content:", NULL, NULL
/* ---------- custom enter and leave element (when moving) --------------- */
{
- ED_AREA_1X1_SETTINGS_XPOS(1), ED_AREA_1X1_SETTINGS_YPOS(11),
+ ED_AREA_1X1_SETTINGS_XPOS(1), ED_AREA_1X1_SETTINGS_YPOS(3),
1, 1,
GADGET_ID_CUSTOM_MOVE_ENTER, GADGET_ID_NONE,
"can dig:", " ", NULL
},
{
- -1, ED_AREA_1X1_SETTINGS_YPOS(11),
+ -1, ED_AREA_1X1_SETTINGS_YPOS(3),
1, 1,
GADGET_ID_CUSTOM_MOVE_LEAVE, GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE,
NULL, NULL, NULL
},
+ /* ---------- element settings: advanced (custom elements) --------------- */
+
/* ---------- custom change target --------------------------------------- */
{
int xoffset_left = getTextWidthForGadget(checkbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
int yoffset = ED_BORDER_SIZE;
- int x_left = gi->x - xoffset_left;
- int x_right = gi->x + gi->width + xoffset_right;
- int y; /* set after gadget position was modified */
+ int x_left, x_right, y; /* set after gadget position was modified */
- /* set position for gadgets with dynamically determined vertical position */
+ /* set position for gadgets with dynamically determined position */
+ if (checkbutton_info[id].x != -1) /* do not change dynamic positions */
+ ModifyGadget(gi, GDI_X, SX + checkbutton_info[id].x, GDI_END);
ModifyGadget(gi, GDI_Y, SY + checkbutton_info[id].y, GDI_END);
+ x_left = gi->x - xoffset_left;
+ x_right = gi->x + gi->width + xoffset_right;
y = gi->y + yoffset;
if (checkbutton_info[id].text_left)
edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))
{
/* set position for checkbutton for "can move into acid" */
+ checkbutton_info[ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID].x =
+ ED_SETTINGS_XPOS(IS_CUSTOM_ELEMENT(properties_element) ? 1 : 0);
checkbutton_info[ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID].y =
- ED_SETTINGS_YPOS(IS_CUSTOM_ELEMENT(properties_element) ? 7 :
+ ED_SETTINGS_YPOS(IS_CUSTOM_ELEMENT(properties_element) ? 6 :
HAS_CONTENT(properties_element) ? 1 : 0);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID);
/* draw drawing area gadgets */
MapDrawingArea(ED_DRAWING_ID_CUSTOM_GRAPHIC);
- MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_ENTER);
- MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_LEAVE);
}
else if (edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2)
{
MapSelectboxGadget(i);
/* draw drawing area gadgets */
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_ENTER);
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_LEAVE);
DrawCustomContentArea();
}
}
#define EP_CAN_MOVE_INTO_ACID 27
#define EP_THROWABLE 28
#define EP_CAN_EXPLODE 29
+#define EP_GRAVITY_REACHABLE 30
/* values for pre-defined properties */
#define EP_PLAYER 32
#define EP_BD_ELEMENT 35
#define EP_SP_ELEMENT 36
#define EP_SB_ELEMENT 37
-#define EP_SP_BUGGY_BASE 38
-#define EP_GEM 39
-#define EP_FOOD_DARK_YAMYAM 40
-#define EP_FOOD_PENGUIN 41
-#define EP_FOOD_PIG 42
-#define EP_HISTORIC_WALL 43
-#define EP_HISTORIC_SOLID 44
-#define EP_CLASSIC_ENEMY 45
-#define EP_BELT 46
-#define EP_BELT_ACTIVE 47
-#define EP_BELT_SWITCH 48
-#define EP_TUBE 49
-#define EP_KEYGATE 50
-#define EP_AMOEBOID 51
-#define EP_AMOEBALIVE 52
-#define EP_HAS_CONTENT 53
-#define EP_CAN_TURN_EACH_MOVE 54
-#define EP_CAN_GROW 55
-#define EP_ACTIVE_BOMB 56
-#define EP_INACTIVE 57
+#define EP_GEM 38
+#define EP_FOOD_DARK_YAMYAM 39
+#define EP_FOOD_PENGUIN 40
+#define EP_FOOD_PIG 41
+#define EP_HISTORIC_WALL 42
+#define EP_HISTORIC_SOLID 43
+#define EP_CLASSIC_ENEMY 44
+#define EP_BELT 45
+#define EP_BELT_ACTIVE 46
+#define EP_BELT_SWITCH 47
+#define EP_TUBE 48
+#define EP_KEYGATE 49
+#define EP_AMOEBOID 50
+#define EP_AMOEBALIVE 51
+#define EP_HAS_CONTENT 52
+#define EP_CAN_TURN_EACH_MOVE 53
+#define EP_CAN_GROW 54
+#define EP_ACTIVE_BOMB 55
+#define EP_INACTIVE 56
/* values for special configurable properties (depending on level settings) */
-#define EP_EM_SLIPPERY_WALL 58
+#define EP_EM_SLIPPERY_WALL 57
/* values for special graphics properties (no effect on game engine) */
-#define EP_GFX_CRUMBLED 59
+#define EP_GFX_CRUMBLED 58
/* values for derived properties (determined from properties above) */
-#define EP_ACCESSIBLE_OVER 60
-#define EP_ACCESSIBLE_INSIDE 61
-#define EP_ACCESSIBLE_UNDER 62
-#define EP_WALKABLE 63
-#define EP_PASSABLE 64
-#define EP_ACCESSIBLE 65
-#define EP_COLLECTIBLE 66
-#define EP_SNAPPABLE 67
-#define EP_WALL 68
-#define EP_SOLID_FOR_PUSHING 69
-#define EP_DRAGONFIRE_PROOF 70
-#define EP_EXPLOSION_PROOF 71
-#define EP_CAN_SMASH 72
-#define EP_EXPLODES_3X3_OLD 73
-#define EP_CAN_EXPLODE_BY_FIRE 74
-#define EP_CAN_EXPLODE_SMASHED 75
-#define EP_CAN_EXPLODE_IMPACT 76
-#define EP_SP_PORT 77
-#define EP_CAN_EXPLODE_BY_DRAGONFIRE 78
-#define EP_CAN_EXPLODE_BY_EXPLOSION 79
-#define EP_COULD_MOVE_INTO_ACID 80
-#define EP_MAYBE_DONT_COLLIDE_WITH 81
-#define EP_DIGGABLE_WITH_GRAVITY 82
+#define EP_ACCESSIBLE_OVER 59
+#define EP_ACCESSIBLE_INSIDE 60
+#define EP_ACCESSIBLE_UNDER 61
+#define EP_WALKABLE 62
+#define EP_PASSABLE 63
+#define EP_ACCESSIBLE 64
+#define EP_COLLECTIBLE 65
+#define EP_SNAPPABLE 66
+#define EP_WALL 67
+#define EP_SOLID_FOR_PUSHING 68
+#define EP_DRAGONFIRE_PROOF 69
+#define EP_EXPLOSION_PROOF 70
+#define EP_CAN_SMASH 71
+#define EP_EXPLODES_3X3_OLD 72
+#define EP_CAN_EXPLODE_BY_FIRE 73
+#define EP_CAN_EXPLODE_SMASHED 74
+#define EP_CAN_EXPLODE_IMPACT 75
+#define EP_SP_PORT 76
+#define EP_CAN_EXPLODE_BY_DRAGONFIRE 77
+#define EP_CAN_EXPLODE_BY_EXPLOSION 78
+#define EP_COULD_MOVE_INTO_ACID 79
+#define EP_MAYBE_DONT_COLLIDE_WITH 80
/* values for internal purpose only (level editor) */
-#define EP_WALK_TO_OBJECT 83
-#define EP_DEADLY 84
+#define EP_WALK_TO_OBJECT 81
+#define EP_DEADLY 82
-#define NUM_ELEMENT_PROPERTIES 85
+#define NUM_ELEMENT_PROPERTIES 83
#define NUM_EP_BITFIELDS ((NUM_ELEMENT_PROPERTIES + 31) / 32)
#define EP_BITFIELD_BASE 0
#define CAN_MOVE_INTO_ACID(e) HAS_PROPERTY(e, EP_CAN_MOVE_INTO_ACID)
#define IS_THROWABLE(e) HAS_PROPERTY(e, EP_THROWABLE)
#define CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE)
+#define IS_GRAVITY_REACHABLE(e) HAS_PROPERTY(e, EP_GRAVITY_REACHABLE)
/* macros for special configurable properties */
#define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL)
#define IS_BD_ELEMENT(e) HAS_PROPERTY(e, EP_BD_ELEMENT)
#define IS_SP_ELEMENT(e) HAS_PROPERTY(e, EP_SP_ELEMENT)
#define IS_SB_ELEMENT(e) HAS_PROPERTY(e, EP_SB_ELEMENT)
-#define IS_SP_BUGGY_BASE(e) HAS_PROPERTY(e, EP_SP_BUGGY_BASE)
#define IS_GEM(e) HAS_PROPERTY(e, EP_GEM)
#define IS_FOOD_DARK_YAMYAM(e) HAS_PROPERTY(e, EP_FOOD_DARK_YAMYAM)
#define IS_FOOD_PENGUIN(e) HAS_PROPERTY(e, EP_FOOD_PENGUIN)
HAS_PROPERTY(e, EP_CAN_EXPLODE_BY_EXPLOSION)
#define COULD_MOVE_INTO_ACID(e) HAS_PROPERTY(e, EP_COULD_MOVE_INTO_ACID)
#define MAYBE_DONT_COLLIDE_WITH(e) HAS_PROPERTY(e, EP_MAYBE_DONT_COLLIDE_WITH)
-#define IS_DIGGABLE_WITH_GRAVITY(e) HAS_PROPERTY(e, EP_DIGGABLE_WITH_GRAVITY)
/* special macros used in game engine */
#define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \
#define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \
element_info[e].gfx_element : e)
+#define SND_ELEMENT(e) GFX_ELEMENT(e)
+
#define IS_PLAYER(x, y) (ELEM_IS_PLAYER(StorePlayer[x][y]))
#define IS_FREE(x, y) (Feld[x][y] == EL_EMPTY && !IS_PLAYER(x, y))