/* selectbox identifiers */
#define GADGET_ID_SELECTBOX_FIRST (GADGET_ID_TEXT_AREA_FIRST + 1)
-#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 0)
-#define GADGET_ID_CUSTOM_CONSISTENCY (GADGET_ID_SELECTBOX_FIRST + 1)
-#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 2)
-#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 3)
-#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 4)
-#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 5)
-#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 6)
-#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 7)
-#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 8)
-#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 9)
-#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 10)
-#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 11)
-#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 12)
-#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 13)
-#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 14)
-#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 15)
-#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 16)
-#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 17)
-#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 18)
-#define GADGET_ID_CHANGE_POWER (GADGET_ID_SELECTBOX_FIRST + 19)
-#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 20)
-#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 21)
+#define GADGET_ID_TIME_OR_STEPS (GADGET_ID_SELECTBOX_FIRST + 0)
+#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 1)
+#define GADGET_ID_CUSTOM_CONSISTENCY (GADGET_ID_SELECTBOX_FIRST + 2)
+#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 3)
+#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 4)
+#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 5)
+#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 6)
+#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 7)
+#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 8)
+#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 9)
+#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 10)
+#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 11)
+#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 12)
+#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 13)
+#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 14)
+#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 15)
+#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 16)
+#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 17)
+#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 18)
+#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 19)
+#define GADGET_ID_CHANGE_POWER (GADGET_ID_SELECTBOX_FIRST + 20)
+#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 21)
+#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 22)
/* textbutton identifiers */
-#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 22)
+#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 23)
#define GADGET_ID_PROPERTIES_INFO (GADGET_ID_TEXTBUTTON_FIRST + 0)
#define GADGET_ID_PROPERTIES_CONFIG (GADGET_ID_TEXTBUTTON_FIRST + 1)
#define GADGET_ID_USE_SPRING_BUG (GADGET_ID_CHECKBUTTON_FIRST + 7)
#define GADGET_ID_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 8)
#define GADGET_ID_SP_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 9)
-#define GADGET_ID_CAN_MOVE_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 10)
-#define GADGET_ID_CUSTOM_EXPLODE_RESULT (GADGET_ID_CHECKBUTTON_FIRST + 11)
-#define GADGET_ID_CUSTOM_EXPLODE_FIRE (GADGET_ID_CHECKBUTTON_FIRST + 12)
-#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 13)
-#define GADGET_ID_CUSTOM_EXPLODE_IMPACT (GADGET_ID_CHECKBUTTON_FIRST + 14)
-#define GADGET_ID_CUSTOM_WALK_TO_OBJECT (GADGET_ID_CHECKBUTTON_FIRST + 15)
-#define GADGET_ID_CUSTOM_DEADLY (GADGET_ID_CHECKBUTTON_FIRST + 16)
-#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 17)
-#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 18)
-#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 19)
-#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 20)
-#define GADGET_ID_CUSTOM_ACCESSIBLE (GADGET_ID_CHECKBUTTON_FIRST + 21)
-#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 22)
-#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 23)
-#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 24)
-#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 25)
-#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 26)
-#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 27)
-#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 28)
-#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 29)
-#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 30)
-#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CAN_FALL_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 10)
+#define GADGET_ID_CAN_MOVE_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 11)
+#define GADGET_ID_DONT_COLLIDE_WITH (GADGET_ID_CHECKBUTTON_FIRST + 12)
+#define GADGET_ID_CUSTOM_EXPLODE_RESULT (GADGET_ID_CHECKBUTTON_FIRST + 13)
+#define GADGET_ID_CUSTOM_EXPLODE_FIRE (GADGET_ID_CHECKBUTTON_FIRST + 14)
+#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 15)
+#define GADGET_ID_CUSTOM_EXPLODE_IMPACT (GADGET_ID_CHECKBUTTON_FIRST + 16)
+#define GADGET_ID_CUSTOM_WALK_TO_OBJECT (GADGET_ID_CHECKBUTTON_FIRST + 17)
+#define GADGET_ID_CUSTOM_DEADLY (GADGET_ID_CHECKBUTTON_FIRST + 18)
+#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 19)
+#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 20)
+#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 21)
+#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 22)
+#define GADGET_ID_CUSTOM_ACCESSIBLE (GADGET_ID_CHECKBUTTON_FIRST + 23)
+#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 24)
+#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 25)
+#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 26)
+#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 27)
+#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 28)
+#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 29)
+#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 30)
+#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 32)
+#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 33)
/* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 32)
+#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 34)
#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \
ED_NUM_ELEMENTLIST_BUTTONS - 1)
#define ED_TEXTAREA_ID_LEVEL_LAST ED_TEXTAREA_ID_ENVELOPE
/* values for selectbox gadgets */
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 0
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 1
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 2
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 3
-#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 4
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 5
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 6
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 7
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 8
-#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 9
-#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 10
-#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 11
-#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY 12
-#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 13
-#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 14
-#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 15
-#define ED_SELECTBOX_ID_CHANGE_SIDE 16
-#define ED_SELECTBOX_ID_CHANGE_PLAYER 17
-#define ED_SELECTBOX_ID_CHANGE_PAGE 18
-#define ED_SELECTBOX_ID_CHANGE_POWER 19
-#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 20
-#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 21
-
-#define ED_NUM_SELECTBOX 22
+#define ED_SELECTBOX_ID_TIME_OR_STEPS 0
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 1
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 2
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 3
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 4
+#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 5
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 6
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 7
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 8
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 9
+#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 10
+#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 11
+#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 12
+#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY 13
+#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 14
+#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 15
+#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 16
+#define ED_SELECTBOX_ID_CHANGE_SIDE 17
+#define ED_SELECTBOX_ID_CHANGE_PLAYER 18
+#define ED_SELECTBOX_ID_CHANGE_PAGE 19
+#define ED_SELECTBOX_ID_CHANGE_POWER 20
+#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 21
+#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 22
+
+#define ED_NUM_SELECTBOX 23
+
+#define ED_SELECTBOX_ID_LEVEL_FIRST ED_SELECTBOX_ID_TIME_OR_STEPS
+#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_SLIPPERY_TYPE
#define ED_CHECKBUTTON_ID_USE_SPRING_BUG 5
#define ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD 6
#define ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD 7
-#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID 8
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 9
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE 10
-#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE 11
-#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 12
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 13
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 14
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 15
-#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 16
-#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 17
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_RESULT 18
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 19
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 20
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 21
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 22
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY 23
-#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 24
-#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 25
-#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 26
-#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 27
-#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 28
-#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 29
-
-#define ED_NUM_CHECKBUTTONS 30
+#define ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID 8
+#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID 9
+#define ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH 10
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 11
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE 12
+#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE 13
+#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 14
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 15
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 16
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 17
+#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 18
+#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 19
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_RESULT 20
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 21
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 22
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 23
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 24
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY 25
+#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 26
+#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 27
+#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 28
+#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 29
+#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 30
+#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 31
+
+#define ED_NUM_CHECKBUTTONS 32
#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_DOUBLE_SPEED
#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
GADGET_ID_LEVEL_GEMSLIMIT_DOWN, GADGET_ID_LEVEL_GEMSLIMIT_UP,
GADGET_ID_LEVEL_GEMSLIMIT_TEXT, GADGET_ID_NONE,
&level.gems_needed,
- "number of emeralds to collect:", NULL, NULL
+ "number of gems to collect:", NULL, NULL
},
{
ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(4),
GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP,
GADGET_ID_LEVEL_TIMELIMIT_TEXT, GADGET_ID_NONE,
&level.time,
- "time available to solve level:", NULL, "(0 => no time limit)"
+ "time or step limit to solve level:", NULL, NULL
},
{
ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(5),
GADGET_ID_LEVEL_TIMESCORE_DOWN, GADGET_ID_LEVEL_TIMESCORE_UP,
GADGET_ID_LEVEL_TIMESCORE_TEXT, GADGET_ID_NONE,
&level.score[SC_TIME_BONUS],
- "score for each 10 seconds left:", NULL, NULL
+ "score for each 10 sec/steps left:", NULL, NULL
},
{
ED_SETTINGS_XPOS(0), ED_COUNTER2_YPOS(8),
}
};
+static struct ValueTextInfo options_time_or_steps[] =
+{
+ { 0, "seconds" },
+ { 1, "steps" },
+
+ { -1, NULL }
+};
+
static struct ValueTextInfo options_access_type[] =
{
{ EP_WALKABLE, "walkable" },
char *text_left, *text_right, *infotext;
} selectbox_info[ED_NUM_SELECTBOX] =
{
+ /* ---------- level and editor settings ---------------------------------- */
+
+ {
+ -1, ED_COUNTER_YPOS(4),
+ GADGET_ID_TIME_OR_STEPS, GADGET_ID_LEVEL_TIMELIMIT_UP,
+ -1,
+ options_time_or_steps,
+ &level.use_step_counter,
+ NULL, "(0 => no limit)", "time or step limit"
+ },
+
/* ---------- element settings: configure 1 (custom elements) ----------- */
{
"use spring pushing bug", "use odd spring pushing behaviour"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(0),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
GADGET_ID_BLOCK_LAST_FIELD, GADGET_ID_NONE,
&level.block_last_field,
NULL,
"block last field when moving", "player blocks last field when moving"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(0),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
GADGET_ID_SP_BLOCK_LAST_FIELD, GADGET_ID_NONE,
&level.sp_block_last_field,
NULL,
"block last field when moving", "player blocks last field when moving"
},
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(0),
+ GADGET_ID_CAN_FALL_INTO_ACID, GADGET_ID_NONE,
+ &custom_element_properties[EP_CAN_MOVE_INTO_ACID],
+ NULL,
+ "can fall into acid (with gravity)","player can fall into acid pool"
+ },
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(0),
GADGET_ID_CAN_MOVE_INTO_ACID, GADGET_ID_NONE,
NULL,
"can move into acid", "element can move into acid pool"
},
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
+ GADGET_ID_DONT_COLLIDE_WITH, GADGET_ID_NONE,
+ &custom_element_properties[EP_DONT_COLLIDE_WITH],
+ NULL,
+ "deadly when colliding with", "element is deadly when hitting player"
+ },
/* ---------- element settings: configure 1 (custom elements) ----------- */
int y; /* set after gadget position was modified */
/* set position for "stickybutton" and "can move into acid" gadgets */
- if (id == ED_CHECKBUTTON_ID_STICK_ELEMENT ||
- id == ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID)
+ if (id == ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID)
ModifyGadget(gi, GDI_Y, SY + checkbutton_info[id].y, GDI_END);
y = gi->y + yoffset;
static void CopyClassicElementPropertiesToEditor(int element)
{
#if 1
- if (COULD_MOVE_INTO_ACID(element))
+ if (ELEM_IS_PLAYER(element) || COULD_MOVE_INTO_ACID(element))
custom_element_properties[EP_CAN_MOVE_INTO_ACID] =
getMoveIntoAcidProperty(&level, element);
+ if (MAYBE_DONT_COLLIDE_WITH(element))
+ custom_element_properties[EP_DONT_COLLIDE_WITH] =
+ getDontCollideWithProperty(&level, element);
#else
if (COULD_MOVE_INTO_ACID(element))
if (bit_nr > -1)
custom_element_properties[EP_CAN_MOVE_INTO_ACID] =
- ((level.can_move_into_acid & (1 << bit_nr)) != 0);
+ ((level.can_move_into_acid_bits & (1 << bit_nr)) != 0);
}
#endif
}
static void CopyClassicElementPropertiesToGame(int element)
{
#if 1
- if (COULD_MOVE_INTO_ACID(element))
+ if (ELEM_IS_PLAYER(element) || COULD_MOVE_INTO_ACID(element))
setMoveIntoAcidProperty(&level, element,
custom_element_properties[EP_CAN_MOVE_INTO_ACID]);
+ if (MAYBE_DONT_COLLIDE_WITH(element))
+ setDontCollideWithProperty(&level, element,
+ custom_element_properties[EP_DONT_COLLIDE_WITH]);
#else
if (COULD_MOVE_INTO_ACID(element))
if (bit_nr > -1)
{
- level.can_move_into_acid &= ~(1 << bit_nr);
+ level.can_move_into_acid_bits &= ~(1 << bit_nr);
if (custom_element_properties[EP_CAN_MOVE_INTO_ACID])
- level.can_move_into_acid |= (1 << bit_nr);
+ level.can_move_into_acid_bits |= (1 << bit_nr);
}
}
#endif
for (i = ED_COUNTER_ID_LEVEL_FIRST; i <= ED_COUNTER_ID_LEVEL_LAST; i++)
MapCounterButtons(i);
+ /* draw selectbox gadgets */
+ for (i = ED_SELECTBOX_ID_LEVEL_FIRST; i <= ED_SELECTBOX_ID_LEVEL_LAST; i++)
+ MapSelectboxGadget(i);
+
/* draw checkbutton gadgets */
for (i=ED_CHECKBUTTON_ID_LEVEL_FIRST; i <= ED_CHECKBUTTON_ID_LEVEL_LAST; i++)
MapCheckbuttonGadget(i);
ELEM_IS_PLAYER(element) ||
HAS_CONTENT(element) ||
COULD_MOVE_INTO_ACID(element) ||
- element == EL_SPRING)
+ MAYBE_DONT_COLLIDE_WITH(element))
return TRUE;
else
for (i = 0; elements_with_counter[i].element != -1; i++)
counterbutton_info[counter_id].y =
ED_SETTINGS_YPOS((HAS_CONTENT(properties_element) ? 1 : 0) +
+ (MAYBE_DONT_COLLIDE_WITH(properties_element) ? 1 : 0)+
(COULD_MOVE_INTO_ACID(properties_element) ? 1 : 0));
counterbutton_info[counter_id].value = elements_with_counter[i].value;
}
if (ELEM_IS_PLAYER(properties_element))
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID);
MapCheckbuttonGadget(properties_element == EL_SP_MURPHY ?
ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD :
ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD);
+ }
if (IS_GEM(properties_element))
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
(!IS_CUSTOM_ELEMENT(properties_element) ||
edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))
{
+ /* set position for special checkbutton for "can move into acid" */
checkbutton_info[ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID].y =
ED_SETTINGS_YPOS(IS_CUSTOM_ELEMENT(properties_element) ? 6 :
HAS_CONTENT(properties_element) ? 1 : 0);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID);
}
+ if (MAYBE_DONT_COLLIDE_WITH(properties_element))
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH);
+
if (properties_element == EL_SPRING)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_USE_SPRING_BUG);
}
else if (edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2)
{
- /* set position for special checkbutton for "can move into acid" */
-
/* draw checkbutton gadgets */
for (i = ED_CHECKBUTTON_ID_CUSTOM2_FIRST;
i <= ED_CHECKBUTTON_ID_CUSTOM2_LAST; i++)
*checkbutton_info[type_id].value ^= TRUE;
- if (type_id == ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID ||
+ if (type_id == ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID ||
+ type_id == ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID ||
+ type_id == ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH ||
(((type_id >= ED_CHECKBUTTON_ID_CUSTOM_FIRST &&
type_id <= ED_CHECKBUTTON_ID_CUSTOM_LAST) ||
(type_id >= ED_CHECKBUTTON_ID_CHANGE_FIRST &&