#define GADGET_ID_RANDOM_PERCENTAGE (GADGET_ID_CHECKBUTTON_FIRST + 0)
#define GADGET_ID_RANDOM_QUANTITY (GADGET_ID_CHECKBUTTON_FIRST + 1)
#define GADGET_ID_RANDOM_RESTRICTED (GADGET_ID_CHECKBUTTON_FIRST + 2)
-#define GADGET_ID_INITIAL_GRAVITY (GADGET_ID_CHECKBUTTON_FIRST + 3)
-#define GADGET_ID_STICK_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 4)
-#define GADGET_ID_EM_SLIPPERY_GEMS (GADGET_ID_CHECKBUTTON_FIRST + 5)
-#define GADGET_ID_USE_SPRING_BUG (GADGET_ID_CHECKBUTTON_FIRST + 6)
-#define GADGET_ID_USE_TIME_ORB_BUG (GADGET_ID_CHECKBUTTON_FIRST + 7)
-#define GADGET_ID_RANDOM_BALL_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 8)
-#define GADGET_ID_INITIAL_BALL_STATE (GADGET_ID_CHECKBUTTON_FIRST + 9)
-#define GADGET_ID_GROW_INTO_DIGGABLE (GADGET_ID_CHECKBUTTON_FIRST + 10)
+#define GADGET_ID_STICK_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 3)
+#define GADGET_ID_EM_SLIPPERY_GEMS (GADGET_ID_CHECKBUTTON_FIRST + 4)
+#define GADGET_ID_USE_SPRING_BUG (GADGET_ID_CHECKBUTTON_FIRST + 5)
+#define GADGET_ID_USE_TIME_ORB_BUG (GADGET_ID_CHECKBUTTON_FIRST + 6)
+#define GADGET_ID_RANDOM_BALL_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 7)
+#define GADGET_ID_INITIAL_BALL_STATE (GADGET_ID_CHECKBUTTON_FIRST + 8)
+#define GADGET_ID_GROW_INTO_DIGGABLE (GADGET_ID_CHECKBUTTON_FIRST + 9)
+#define GADGET_ID_CONTINUOUS_SNAPPING (GADGET_ID_CHECKBUTTON_FIRST + 10)
#define GADGET_ID_BLOCK_SNAP_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 11)
#define GADGET_ID_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 12)
#define GADGET_ID_SP_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 13)
#define GADGET_ID_USE_START_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 15)
#define GADGET_ID_USE_ARTWORK_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 16)
#define GADGET_ID_USE_EXPLOSION_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 17)
-#define GADGET_ID_CAN_PASS_TO_WALKABLE (GADGET_ID_CHECKBUTTON_FIRST + 18)
-#define GADGET_ID_CAN_FALL_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 19)
-#define GADGET_ID_CAN_MOVE_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 20)
-#define GADGET_ID_DONT_COLLIDE_WITH (GADGET_ID_CHECKBUTTON_FIRST + 21)
-#define GADGET_ID_CUSTOM_INDESTRUCTIBLE (GADGET_ID_CHECKBUTTON_FIRST + 22)
-#define GADGET_ID_CUSTOM_CAN_EXPLODE (GADGET_ID_CHECKBUTTON_FIRST + 23)
-#define GADGET_ID_CUSTOM_EXPLODE_FIRE (GADGET_ID_CHECKBUTTON_FIRST + 24)
-#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 25)
-#define GADGET_ID_CUSTOM_EXPLODE_IMPACT (GADGET_ID_CHECKBUTTON_FIRST + 26)
-#define GADGET_ID_CUSTOM_WALK_TO_OBJECT (GADGET_ID_CHECKBUTTON_FIRST + 27)
-#define GADGET_ID_CUSTOM_DEADLY (GADGET_ID_CHECKBUTTON_FIRST + 28)
-#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 29)
-#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 30)
-#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 31)
-#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 32)
-#define GADGET_ID_CUSTOM_ACCESSIBLE (GADGET_ID_CHECKBUTTON_FIRST + 33)
-#define GADGET_ID_CUSTOM_GRAV_REACHABLE (GADGET_ID_CHECKBUTTON_FIRST + 34)
-#define GADGET_ID_CUSTOM_USE_LAST_VALUE (GADGET_ID_CHECKBUTTON_FIRST + 35)
-#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 36)
-#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 37)
-#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 38)
-#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 39)
-#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 40)
-#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 41)
-#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 42)
-#define GADGET_ID_CHANGE_HAS_ACTION (GADGET_ID_CHECKBUTTON_FIRST + 43)
-#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 44)
-#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 45)
-#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 46)
+#define GADGET_ID_INITIAL_GRAVITY (GADGET_ID_CHECKBUTTON_FIRST + 18)
+#define GADGET_ID_CAN_PASS_TO_WALKABLE (GADGET_ID_CHECKBUTTON_FIRST + 19)
+#define GADGET_ID_CAN_FALL_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 20)
+#define GADGET_ID_CAN_MOVE_INTO_ACID (GADGET_ID_CHECKBUTTON_FIRST + 21)
+#define GADGET_ID_DONT_COLLIDE_WITH (GADGET_ID_CHECKBUTTON_FIRST + 22)
+#define GADGET_ID_CUSTOM_INDESTRUCTIBLE (GADGET_ID_CHECKBUTTON_FIRST + 23)
+#define GADGET_ID_CUSTOM_CAN_EXPLODE (GADGET_ID_CHECKBUTTON_FIRST + 24)
+#define GADGET_ID_CUSTOM_EXPLODE_FIRE (GADGET_ID_CHECKBUTTON_FIRST + 25)
+#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 26)
+#define GADGET_ID_CUSTOM_EXPLODE_IMPACT (GADGET_ID_CHECKBUTTON_FIRST + 27)
+#define GADGET_ID_CUSTOM_WALK_TO_OBJECT (GADGET_ID_CHECKBUTTON_FIRST + 28)
+#define GADGET_ID_CUSTOM_DEADLY (GADGET_ID_CHECKBUTTON_FIRST + 29)
+#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 30)
+#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 32)
+#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 33)
+#define GADGET_ID_CUSTOM_ACCESSIBLE (GADGET_ID_CHECKBUTTON_FIRST + 34)
+#define GADGET_ID_CUSTOM_GRAV_REACHABLE (GADGET_ID_CHECKBUTTON_FIRST + 35)
+#define GADGET_ID_CUSTOM_USE_LAST_VALUE (GADGET_ID_CHECKBUTTON_FIRST + 36)
+#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 37)
+#define GADGET_ID_CUSTOM_USE_TEMPLATE (GADGET_ID_CHECKBUTTON_FIRST + 38)
+#define GADGET_ID_CUSTOM_CAN_CHANGE (GADGET_ID_CHECKBUTTON_FIRST + 39)
+#define GADGET_ID_CHANGE_USE_CONTENT (GADGET_ID_CHECKBUTTON_FIRST + 40)
+#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 41)
+#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 42)
+#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 43)
+#define GADGET_ID_CHANGE_HAS_ACTION (GADGET_ID_CHECKBUTTON_FIRST + 44)
+#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 45)
+#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 46)
+#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 47)
/* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 47)
+#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 48)
#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \
ED_NUM_ELEMENTLIST_BUTTONS - 1)
#define ED_GRAPHICBUTTON_ID_CHANGE_LAST ED_GRAPHICBUTTON_ID_PASTE_CHANGE_PAGE
/* values for checkbutton gadgets */
-#define ED_CHECKBUTTON_ID_INITIAL_GRAVITY 0
-#define ED_CHECKBUTTON_ID_RANDOM_RESTRICTED 1
-#define ED_CHECKBUTTON_ID_STICK_ELEMENT 2
-#define ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS 3
-#define ED_CHECKBUTTON_ID_USE_SPRING_BUG 4
-#define ED_CHECKBUTTON_ID_USE_TIME_ORB_BUG 5
-#define ED_CHECKBUTTON_ID_RANDOM_BALL_CONTENT 6
-#define ED_CHECKBUTTON_ID_INITIAL_BALL_STATE 7
-#define ED_CHECKBUTTON_ID_GROW_INTO_DIGGABLE 8
+#define ED_CHECKBUTTON_ID_RANDOM_RESTRICTED 0
+#define ED_CHECKBUTTON_ID_STICK_ELEMENT 1
+#define ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS 2
+#define ED_CHECKBUTTON_ID_USE_SPRING_BUG 3
+#define ED_CHECKBUTTON_ID_USE_TIME_ORB_BUG 4
+#define ED_CHECKBUTTON_ID_RANDOM_BALL_CONTENT 5
+#define ED_CHECKBUTTON_ID_INITIAL_BALL_STATE 6
+#define ED_CHECKBUTTON_ID_GROW_INTO_DIGGABLE 7
+#define ED_CHECKBUTTON_ID_CONTINUOUS_SNAPPING 8
#define ED_CHECKBUTTON_ID_BLOCK_SNAP_FIELD 9
#define ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD 10
#define ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD 11
#define ED_CHECKBUTTON_ID_USE_START_ELEMENT 13
#define ED_CHECKBUTTON_ID_USE_ARTWORK_ELEMENT 14
#define ED_CHECKBUTTON_ID_USE_EXPLOSION_ELEMENT 15
-#define ED_CHECKBUTTON_ID_CAN_PASS_TO_WALKABLE 16
-#define ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID 17
-#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID 18
-#define ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH 19
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 20
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE 21
-#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE 22
-#define ED_CHECKBUTTON_ID_CUSTOM_GRAV_REACHABLE 23
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_LAST_VALUE 24
-#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 25
-#define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 26
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 27
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 28
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 29
-#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 30
-#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 31
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE 32
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 33
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 34
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 35
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 36
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY 37
-#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 38
-#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 39
-#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 40
-#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 41
-#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 42
-#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 43
-#define ED_CHECKBUTTON_ID_CHANGE_HAS_ACTION 44
-
-#define ED_NUM_CHECKBUTTONS 45
-
-#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_INITIAL_GRAVITY
+#define ED_CHECKBUTTON_ID_INITIAL_GRAVITY 16
+#define ED_CHECKBUTTON_ID_CAN_PASS_TO_WALKABLE 17
+#define ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID 18
+#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID 19
+#define ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH 20
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 21
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE 22
+#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE 23
+#define ED_CHECKBUTTON_ID_CUSTOM_GRAV_REACHABLE 24
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_LAST_VALUE 25
+#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 26
+#define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 27
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 28
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 29
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 30
+#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 31
+#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY 32
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE 33
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE 34
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 35
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT 36
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE 37
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY 38
+#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 39
+#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT 40
+#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 41
+#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 42
+#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 43
+#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 44
+#define ED_CHECKBUTTON_ID_CHANGE_HAS_ACTION 45
+
+#define ED_NUM_CHECKBUTTONS 46
+
+#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
#define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC
#endif
{ CE_IMPACT, "impact (on something)" },
{ CE_SMASHED, "smashed (from above)" },
+#if 0
+ { CE_VALUE_CHANGES, "CE value changes" },
+ { CE_SCORE_CHANGES, "CE score changes" },
+#endif
{ CE_VALUE_GETS_ZERO, "CE value gets 0" },
+ { CE_SCORE_GETS_ZERO, "CE score gets 0" },
{ -1, NULL }
};
{ CE_EXPLOSION_OF_X, "explosion of" },
{ CE_MOVE_OF_X, "move of" },
{ CE_CREATION_OF_X, "creation of" },
+ { CE_VALUE_CHANGES_OF_X, "CE value changes of" },
+ { CE_SCORE_CHANGES_OF_X, "CE score changes of" },
{ CE_VALUE_GETS_ZERO_OF_X, "CE value gets 0 of" },
+ { CE_SCORE_GETS_ZERO_OF_X, "CE score gets 0 of" },
{ -1, NULL }
};
{ CA_SET_LEVEL_TIME, "set time" },
{ CA_SET_LEVEL_SCORE, "set score" },
{ CA_SET_LEVEL_GEMS, "set needed gems" },
- { CA_SET_LEVEL_GRAVITY, "set gravity" },
{ CA_SET_LEVEL_WIND, "set wind dir." },
{ CA_UNDEFINED, " " },
{ CA_HEADLINE_PLAYER_ACTIONS, "[player actions]" },
{ CA_SET_PLAYER_KEYS, "set keys" },
{ CA_SET_PLAYER_SPEED, "set speed" },
{ CA_SET_PLAYER_SHIELD, "set shield" },
+ { CA_SET_PLAYER_GRAVITY, "set gravity" },
{ CA_SET_PLAYER_ARTWORK, "set artwork" },
{ CA_UNDEFINED, " " },
{ CA_HEADLINE_CE_ACTIONS, "[CE actions]" },
- { CA_SET_CE_SCORE, "set CE score" },
{ CA_SET_CE_VALUE, "set CE value" },
+ { CA_SET_CE_SCORE, "set CE score" },
{ CA_UNDEFINED, " " },
{ CA_HEADLINE_ENGINE_ACTIONS, "[engine actions]" },
{ CA_SET_ENGINE_SCAN_MODE, "set scan mode" },
static struct ValueTextInfo options_action_mode_none[] =
{
- { CA_ARG_UNDEFINED, " " },
+ { CA_MODE_UNDEFINED, " " },
{ -1, NULL }
};
{ CA_ARG_UNDEFINED, " " },
{ CA_ARG_NUMBER_RESET, "reset" },
{ CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
- { CA_ARG_NUMBER_CE_SCORE, "CE score" },
{ CA_ARG_NUMBER_CE_VALUE, "CE value" },
+ { CA_ARG_NUMBER_CE_SCORE, "CE score" },
+ { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
{ CA_ARG_UNDEFINED, " " },
{ CA_ARG_NUMBER_LEVEL_TIME, "time" },
{ CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
{ CA_ARG_NUMBER_LEVEL_SCORE, "score" },
{ CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value" },
- { CA_ARG_ELEMENT_CV_HEADLINE, " of" },
- { CA_ARG_ELEMENT_CV_HEADLINE, " element]" },
+ { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
{ CA_ARG_ELEMENT_CV_TARGET, "target" },
{ CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
+ { CA_ARG_ELEMENT_CS_TARGET, "target" },
+ { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
{ -1, NULL }
};
{ CA_ARG_UNDEFINED, " " },
{ CA_ARG_NUMBER_RESET, "reset" },
{ CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
- { CA_ARG_NUMBER_CE_SCORE, "CE score" },
{ CA_ARG_NUMBER_CE_VALUE, "CE value" },
+ { CA_ARG_NUMBER_CE_SCORE, "CE score" },
+ { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
{ CA_ARG_UNDEFINED, " " },
{ CA_ARG_NUMBER_LEVEL_TIME, "time" },
{ CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
{ CA_ARG_NUMBER_LEVEL_SCORE, "score" },
{ CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value" },
- { CA_ARG_ELEMENT_CV_HEADLINE, " of" },
- { CA_ARG_ELEMENT_CV_HEADLINE, " element]" },
+ { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
{ CA_ARG_ELEMENT_CV_TARGET, "target" },
{ CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
{ CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
+ { CA_ARG_ELEMENT_CS_TARGET, "target" },
+ { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
+ { CA_ARG_UNDEFINED, " " },
{ CA_ARG_ELEMENT_NR_HEADLINE, "[element]" },
{ CA_ARG_ELEMENT_NR_TARGET, "target" },
{ CA_ARG_ELEMENT_NR_TRIGGER, "trigger" },
{ CA_SET_LEVEL_TIME, 3, options_action_arg_number, },
{ CA_SET_LEVEL_GEMS, 3, options_action_arg_number, },
{ CA_SET_LEVEL_SCORE, 3, options_action_arg_number, },
- { CA_SET_LEVEL_GRAVITY, 1, options_action_arg_gravity, },
{ CA_SET_LEVEL_WIND, 1, options_action_arg_direction, },
{ CA_SET_PLAYER_KEYS, 2, options_action_arg_key, },
{ CA_SET_PLAYER_SPEED, 1, options_action_arg_speed, },
{ CA_SET_PLAYER_SHIELD, 1, options_action_arg_shield, },
+ { CA_SET_PLAYER_GRAVITY, 1, options_action_arg_gravity, },
{ CA_SET_PLAYER_ARTWORK, 1, options_action_arg_artwork, },
- { CA_SET_CE_SCORE, 3, options_action_arg_value, },
{ CA_SET_CE_VALUE, 3, options_action_arg_value, },
+ { CA_SET_CE_SCORE, 3, options_action_arg_value, },
{ CA_SET_ENGINE_SCAN_MODE, 1, options_action_arg_scan_mode, },
{ -1, FALSE, NULL }
GADGET_ID_PLAYER_SPEED, GADGET_ID_NONE,
-1,
options_player_speed,
- &level.initial_player_stepsize,
+ &level.initial_player_stepsize[0],
"initial player speed:", NULL, "initial player speed"
},
{
/* ---------- level and editor settings ---------------------------------- */
- {
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(11),
- GADGET_ID_INITIAL_GRAVITY, GADGET_ID_NONE,
- &level.initial_gravity,
- NULL,
- "initial gravity", "set initial level gravity"
- },
{
ED_LEVEL_SETTINGS_XPOS(0), ED_COUNTER2_YPOS(9) - MINI_TILEY,
GADGET_ID_RANDOM_RESTRICTED, GADGET_ID_NONE,
"slip down from certain flat walls","use EM style slipping behaviour"
},
{
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
GADGET_ID_USE_SPRING_BUG, GADGET_ID_NONE,
&level.use_spring_bug,
NULL,
NULL,
"can grow into anything diggable", "grow into more than just sand"
},
+ {
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(7),
+ GADGET_ID_CONTINUOUS_SNAPPING, GADGET_ID_NONE,
+ &level.continuous_snapping,
+ NULL,
+ "continuos snapping", "use snapping without releasing key"
+ },
{
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(6),
GADGET_ID_BLOCK_SNAP_FIELD, GADGET_ID_NONE,
"no scrolling when relocating", "player gets relocated without delay"
},
{
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(7),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
GADGET_ID_USE_START_ELEMENT, GADGET_ID_NONE,
&level.use_start_element[0],
NULL,
"use level start element:", "start level at this element's position"
},
{
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
GADGET_ID_USE_ARTWORK_ELEMENT, GADGET_ID_NONE,
&level.use_artwork_element[0],
NULL,
"use artwork from element:", "use player artwork from other element"
},
{
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
GADGET_ID_USE_EXPLOSION_ELEMENT, GADGET_ID_NONE,
&level.use_explosion_element[0],
NULL,
"use explosion from element:", "use explosion properties from element"
},
+ {
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_INITIAL_GRAVITY, GADGET_ID_NONE,
+ &level.initial_player_gravity[0],
+ NULL,
+ "use initial gravity", "set initial player gravity"
+ },
{
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
GADGET_ID_CAN_PASS_TO_WALKABLE, GADGET_ID_NONE,
/* ---------- level start element ---------------------------------------- */
{
- -1, ED_AREA_1X1_SETTINGS_YPOS(7),
+ -1, ED_AREA_1X1_SETTINGS_YPOS(8),
GADGET_ID_START_ELEMENT, GADGET_ID_USE_START_ELEMENT,
&level.start_element[0], 1, 1,
NULL, NULL, NULL, "level start element"
/* ---------- player artwork element ------------------------------------- */
{
- -1, ED_AREA_1X1_SETTINGS_YPOS(8),
+ -1, ED_AREA_1X1_SETTINGS_YPOS(9),
GADGET_ID_ARTWORK_ELEMENT, GADGET_ID_USE_ARTWORK_ELEMENT,
&level.artwork_element[0], 1, 1,
NULL, NULL, NULL, "element for player artwork"
/* ---------- player explosion element ----------------------------------- */
{
- -1, ED_AREA_1X1_SETTINGS_YPOS(9),
+ -1, ED_AREA_1X1_SETTINGS_YPOS(10),
GADGET_ID_EXPLOSION_ELEMENT, GADGET_ID_USE_EXPLOSION_ELEMENT,
&level.explosion_element[0], 1, 1,
NULL, NULL, NULL, "element for player explosion"
/* ---------- custom change content (extended change target) ------------- */
{
- -1, ED_AREA_3X3_SETTINGS_YPOS(10),
+ -1, ED_AREA_3X3_SETTINGS_YPOS(9),
GADGET_ID_CUSTOM_CHANGE_CONTENT, GADGET_ID_NONE, /* align three rows */
&custom_element_change.target_content.e[0][0], 3, 3,
NULL, NULL, NULL, "new extended elements after change"
EL_EMC_FAKE_GRASS,
EL_EMPTY,
EL_EMPTY,
+
+ EL_EM_DYNAMITE,
+ EL_EM_DYNAMITE_ACTIVE,
+ EL_EMPTY,
+ EL_EMPTY,
+
+ EL_YAMYAM_LEFT,
+ EL_YAMYAM_RIGHT,
+ EL_YAMYAM_UP,
+ EL_YAMYAM_DOWN,
};
static int *editor_hl_emerald_mine_club_ptr = editor_hl_emerald_mine_club;
static int *editor_el_emerald_mine_club_ptr = editor_el_emerald_mine_club;
EL_SWITCHGATE_OPEN,
EL_SWITCHGATE_CLOSED,
EL_SWITCHGATE_SWITCH_UP,
- EL_EMPTY,
+ EL_SWITCHGATE_SWITCH_DOWN,
EL_ENVELOPE_1,
EL_ENVELOPE_2,
EL_TRIGGER_PLAYER,
EL_TRIGGER_ELEMENT,
EL_TRIGGER_CE_VALUE,
- EL_EMPTY
+ EL_TRIGGER_CE_SCORE,
+
+ EL_EMPTY,
+ EL_EMPTY,
+ EL_CURRENT_CE_VALUE,
+ EL_CURRENT_CE_SCORE
};
static int *editor_hl_custom_ptr = editor_hl_custom;
static int *editor_el_custom_ptr = editor_el_custom;
return info_text;
}
+char *getElementDescriptionFilename(int element)
+{
+ char *docs_dir = options.docs_directory;
+ char *elements_subdir = "elements";
+ static char *filename = NULL;
+ char basename[MAX_FILENAME_LEN];
+
+ checked_free(filename);
+
+ /* 1st try: look for element description file for exactly this element */
+ sprintf(basename, "%s.txt", element_info[element].token_name);
+ filename = getPath3(docs_dir, elements_subdir, basename);
+ if (fileExists(filename))
+ return filename;
+
+ free(filename);
+
+ /* 2nd try: look for element description file for this element's class */
+ sprintf(basename, "%s.txt", element_info[element].class_name);
+ filename = getPath3(docs_dir, elements_subdir, basename);
+ if (fileExists(filename))
+ return filename;
+
+ return NULL;
+}
+
static void InitDynamicEditorElementList(int **elements, int *num_elements)
{
boolean element_found[NUM_FILE_ELEMENTS];
if (element >= NUM_FILE_ELEMENTS)
Error(ERR_WARN, "editor element %d is runtime element", element);
- if (strcmp(getElementInfoText(element), INFOTEXT_UNKNOWN_ELEMENT) == 0)
+ if (strEqual(getElementInfoText(element), INFOTEXT_UNKNOWN_ELEMENT))
Error(ERR_WARN, "no element description for element %d", element);
}
}
/* only change if corresponding selectbox has changed */
if (selectbox_info[ED_SELECTBOX_ID_ACTION_MODE].options !=
action_arg_modes[mode])
+#if 0
+ custom_element_change.action_mode =
+ (action_arg_modes[mode])[0].value;
+#else
custom_element_change.action_mode = -1;
+#endif
/* only change if corresponding selectbox has changed */
if (selectbox_info[ED_SELECTBOX_ID_ACTION_ARG].options !=
action_arg_options[i].options)
+#if 0
+ custom_element_change.action_arg =
+ action_arg_options[i].options[0].value;
+#else
custom_element_change.action_arg = -1;
+#endif
break;
}
}
}
+#if 1
+
+static void copy_custom_element_settings(int element_from, int element_to)
+{
+ struct ElementInfo *ei_from = &element_info[element_from];
+ struct ElementInfo *ei_to = &element_info[element_to];
+
+ copyElementInfo(ei_from, ei_to);
+}
+
+#else
+
static void copy_custom_element_settings(int element_from, int element_to)
{
struct ElementInfo *ei_from = &element_info[element_from];
/* ---------- copy element base properties ---------- */
#if 1
- ei_to->properties[EP_BITFIELD_BASE] = ei_from->properties[EP_BITFIELD_BASE];
+ ei_to->properties[EP_BITFIELD_BASE_NR] =
+ ei_from->properties[EP_BITFIELD_BASE_NR];
#else
- Properties[element_to][EP_BITFIELD_BASE] =
- Properties[element_from][EP_BITFIELD_BASE];
+ Properties[element_to][EP_BITFIELD_BASE_NR] =
+ Properties[element_from][EP_BITFIELD_BASE_NR];
#endif
/* ---------- copy custom property values ---------- */
ei_to->slippery_type = ei_from->slippery_type;
- for (y = 0; y < 3; y++)
- for (x = 0; x < 3; x++)
- ei_to->content.e[x][y] = ei_from->content.e[x][y];
-
ei_to->explosion_type = ei_from->explosion_type;
ei_to->explosion_delay = ei_from->explosion_delay;
ei_to->ignition_delay = ei_from->ignition_delay;
+ for (y = 0; y < 3; y++)
+ for (x = 0; x < 3; x++)
+ ei_to->content.e[x][y] = ei_from->content.e[x][y];
+
/* ---------- reinitialize and copy change pages ---------- */
ei_to->num_change_pages = ei_from->num_change_pages;
setElementChangePages(ei_to, ei_to->num_change_pages);
- for (i=0; i < ei_to->num_change_pages; i++)
+ for (i = 0; i < ei_to->num_change_pages; i++)
ei_to->change_page[i] = ei_from->change_page[i];
/* ---------- copy group element info ---------- */
/* mark this custom element as modified */
ei_to->modified_settings = TRUE;
}
+#endif
static void replace_custom_element_in_settings(int element_from,
int element_to)
HAS_CHANGE_EVENT(element, CE_BLOCKED) ? CE_BLOCKED :
HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
+ HAS_CHANGE_EVENT(element, CE_VALUE_CHANGES) ? CE_VALUE_CHANGES :
+ HAS_CHANGE_EVENT(element, CE_SCORE_CHANGES) ? CE_SCORE_CHANGES :
HAS_CHANGE_EVENT(element, CE_VALUE_GETS_ZERO) ? CE_VALUE_GETS_ZERO :
+ HAS_CHANGE_EVENT(element, CE_SCORE_GETS_ZERO) ? CE_SCORE_GETS_ZERO :
custom_element_change.direct_action);
/* set "change by other element action" selectbox help value */
HAS_CHANGE_EVENT(element, CE_EXPLOSION_OF_X) ? CE_EXPLOSION_OF_X :
HAS_CHANGE_EVENT(element, CE_MOVE_OF_X) ? CE_MOVE_OF_X :
HAS_CHANGE_EVENT(element, CE_CREATION_OF_X) ? CE_CREATION_OF_X :
+ HAS_CHANGE_EVENT(element, CE_VALUE_CHANGES_OF_X) ? CE_VALUE_CHANGES_OF_X :
+ HAS_CHANGE_EVENT(element, CE_SCORE_CHANGES_OF_X) ? CE_SCORE_CHANGES_OF_X :
HAS_CHANGE_EVENT(element, CE_VALUE_GETS_ZERO_OF_X) ? CE_VALUE_GETS_ZERO_OF_X :
+ HAS_CHANGE_EVENT(element, CE_SCORE_GETS_ZERO_OF_X) ? CE_SCORE_GETS_ZERO_OF_X :
custom_element_change.other_action);
}
custom_element_change_events[CE_BLOCKED] = FALSE;
custom_element_change_events[CE_IMPACT] = FALSE;
custom_element_change_events[CE_SMASHED] = FALSE;
+ custom_element_change_events[CE_VALUE_CHANGES] = FALSE;
+ custom_element_change_events[CE_SCORE_CHANGES] = FALSE;
custom_element_change_events[CE_VALUE_GETS_ZERO] = FALSE;
+ custom_element_change_events[CE_SCORE_GETS_ZERO] = FALSE;
custom_element_change_events[custom_element_change.direct_action] =
custom_element_change_events[CE_BY_DIRECT_ACTION];
custom_element_change_events[CE_EXPLOSION_OF_X] = FALSE;
custom_element_change_events[CE_MOVE_OF_X] = FALSE;
custom_element_change_events[CE_CREATION_OF_X] = FALSE;
+ custom_element_change_events[CE_VALUE_CHANGES_OF_X] = FALSE;
+ custom_element_change_events[CE_SCORE_CHANGES_OF_X] = FALSE;
custom_element_change_events[CE_VALUE_GETS_ZERO_OF_X] = FALSE;
+ custom_element_change_events[CE_SCORE_GETS_ZERO_OF_X] = FALSE;
custom_element_change_events[custom_element_change.other_action] =
custom_element_change_events[CE_BY_OTHER_ACTION];
CopyClassicElementPropertiesToGame(element);
}
+void CheckElementDescriptions()
+{
+ int i;
+
+ for (i = 0; i < NUM_FILE_ELEMENTS; i++)
+ if (getElementDescriptionFilename(i) == NULL && !IS_OBSOLETE(i))
+ Error(ERR_WARN, "no element description for element '%s'", EL_NAME(i));
+}
+
void DrawLevelEd()
{
CloseDoor(DOOR_CLOSE_ALL);
OpenDoor(DOOR_OPEN_2 | DOOR_NO_DELAY);
+#if DEBUG
+ CheckElementDescriptions();
+#endif
+
if (level_editor_test_game)
{
CopyPlayfield(level.field, Feld);
DrawBackground(gi->x, gi->y, gi->width, gi->height);
if (envelope_nr != -1)
- textarea_info[id].value = level.envelope_text[envelope_nr];
+ textarea_info[id].value = level.envelope[envelope_nr].text;
ModifyGadget(gi, GDI_AREA_SIZE,
*counterbutton_info[ED_COUNTER_ID_ENVELOPE_XSIZE].value,
MapTextAreaGadget(ED_TEXTAREA_ID_ENVELOPE_INFO);
}
-char *getElementDescriptionFilename(int element)
-{
- char *docs_dir = options.docs_directory;
- char *elements_subdir = "elements";
- static char *filename = NULL;
- char basename[MAX_FILENAME_LEN];
-
- checked_free(filename);
-
- /* 1st try: look for element description file for exactly this element */
- sprintf(basename, "%s.txt", element_info[element].token_name);
- filename = getPath3(docs_dir, elements_subdir, basename);
- if (fileExists(filename))
- return filename;
-
- free(filename);
-
- /* 2nd try: look for element description file for this element's class */
- sprintf(basename, "%s.txt", element_info[element].class_name);
- filename = getPath3(docs_dir, elements_subdir, basename);
- if (fileExists(filename))
- return filename;
-
- return NULL;
-}
-
static boolean PrintInfoText(char *text, int font_nr, int start_line)
{
int font_height = getFontHeight(font_nr);
int screen_line = 0;
int i, x, y;
+#if 1
+ if (setup.editor.show_element_token)
+ {
+ DrawTextF(pad_x, pad_y + screen_line++ * font2_height, FONT_TEXT_3,
+ "[%s]", element_info[properties_element].token_name);
+ screen_line++;
+ }
+
+#else
+
#if DEBUG
if (IS_CUSTOM_ELEMENT(properties_element))
{
"[Group Element %d]", properties_element - EL_GROUP_START + 1);
screen_line++;
}
+#endif
#endif
/* ----- print number of elements / percentage of this element in level */
#define TEXT_COLLECTING "Score for collecting"
#define TEXT_SMASHING "Score for smashing"
-#define TEXT_SLURPING "Score for slurping"
+#define TEXT_SLURPING "Score for slurping robot"
#define TEXT_CRACKING "Score for cracking"
#define TEXT_AMOEBA_SPEED "Speed of amoeba growth"
#define TEXT_DURATION "Duration when activated"
{ EL_BD_FIREFLY_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
{ EL_SP_SNIKSNAK, &level.score[SC_SPACESHIP], TEXT_SMASHING },
{ EL_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_LEFT, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_RIGHT, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_UP, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_DOWN, &level.score[SC_YAMYAM], TEXT_SMASHING },
{ EL_DARK_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
{ EL_ROBOT, &level.score[SC_ROBOT], TEXT_SMASHING },
{ EL_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
{ EL_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
{ EL_NUT, &level.score[SC_NUT], TEXT_CRACKING },
{ EL_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_EM_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
{ EL_DYNABOMB_INCREASE_NUMBER,&level.score[SC_DYNAMITE],TEXT_COLLECTING },
{ EL_DYNABOMB_INCREASE_SIZE, &level.score[SC_DYNAMITE],TEXT_COLLECTING },
{ EL_DYNABOMB_INCREASE_POWER, &level.score[SC_DYNAMITE],TEXT_COLLECTING },
{ EL_EMC_MAGIC_BALL, &level.ball_time, TEXT_BALL_DELAY },
{ EL_EMC_LENSES, &level.lenses_score, TEXT_COLLECTING },
{ EL_EMC_MAGNIFIER, &level.magnify_score, TEXT_COLLECTING },
- { EL_ROBOT, &level.slurp_score, TEXT_SLURPING },
+ { EL_SPRING, &level.slurp_score, TEXT_SLURPING },
{ EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION },
{ EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION },
#endif
if (IS_AMOEBOID(properties_element))
MapDrawingArea(ED_DRAWING_ID_AMOEBA_CONTENT);
- else if (properties_element == EL_YAMYAM)
+ else if (properties_element == EL_YAMYAM ||
+ properties_element == EL_YAMYAM_LEFT ||
+ properties_element == EL_YAMYAM_RIGHT ||
+ properties_element == EL_YAMYAM_UP ||
+ properties_element == EL_YAMYAM_DOWN)
DrawYamYamContentAreas();
else if (properties_element == EL_EMC_MAGIC_BALL)
{
int player_nr = GET_PLAYER_NR(properties_element);
/* these properties can be set for every player individually */
+
drawingarea_info[ED_DRAWING_ID_START_ELEMENT].value =
&level.start_element[player_nr];
drawingarea_info[ED_DRAWING_ID_ARTWORK_ELEMENT].value =
drawingarea_info[ED_DRAWING_ID_EXPLOSION_ELEMENT].value =
&level.explosion_element[player_nr];
- /* these properties can be set for every player individually */
checkbutton_info[ED_CHECKBUTTON_ID_USE_START_ELEMENT].value =
&level.use_start_element[player_nr];
checkbutton_info[ED_CHECKBUTTON_ID_USE_ARTWORK_ELEMENT].value =
&level.use_artwork_element[player_nr];
checkbutton_info[ED_CHECKBUTTON_ID_USE_EXPLOSION_ELEMENT].value =
&level.use_explosion_element[player_nr];
+ checkbutton_info[ED_CHECKBUTTON_ID_INITIAL_GRAVITY].value =
+ &level.initial_player_gravity[player_nr];
+
+ selectbox_info[ED_SELECTBOX_ID_PLAYER_SPEED].value =
+ &level.initial_player_stepsize[player_nr];
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);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BLOCK_SNAP_FIELD);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CONTINUOUS_SNAPPING);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INSTANT_RELOCATION);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_USE_START_ELEMENT);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_USE_ARTWORK_ELEMENT);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_USE_EXPLOSION_ELEMENT);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INITIAL_GRAVITY);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_PASS_TO_WALKABLE);
MapDrawingArea(ED_DRAWING_ID_START_ELEMENT);
int counter2_id = ED_COUNTER_ID_ENVELOPE_YSIZE;
int envelope_nr = properties_element - EL_ENVELOPE_1;
- counterbutton_info[counter1_id].value = &level.envelope_xsize[envelope_nr];
- counterbutton_info[counter2_id].value = &level.envelope_ysize[envelope_nr];
+ counterbutton_info[counter1_id].value = &level.envelope[envelope_nr].xsize;
+ counterbutton_info[counter2_id].value = &level.envelope[envelope_nr].ysize;
/* display counter to choose size of envelope text area */
MapCounterButtons(ED_COUNTER_ID_ENVELOPE_XSIZE);
}
else if (button_status == MB_RELEASED)
{
- int i, id = GADGET_ID_NONE;
+ int id = GADGET_ID_NONE;
+ int new_element_shift = element_shift;
+ int i;
switch (key)
{
break;
+ case KSYM_Insert:
+ case KSYM_Delete:
+#if 1
+ /* IS_EDITOR_CASCADE */
+ for (i = 0; i < num_editor_elements; i++)
+ {
+ if ((key == KSYM_Insert && i == element_shift) ||
+ (key == KSYM_Delete && new_element_shift > element_shift))
+ break;
+
+ if (IS_EDITOR_CASCADE(editor_elements[i]))
+ new_element_shift = i;
+ }
+
+ if (i < num_editor_elements)
+ element_shift = new_element_shift;
+
+ if (element_shift > num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS)
+ element_shift = num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS;
+
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
+
+ ModifyEditorElementList();
+
+#else
+
+ for (i = 0; i < num_editor_elements; i++)
+ {
+ int e = editor_elements[i];
+
+ if ((key == KSYM_Insert &&
+ (e == EL_INTERNAL_CASCADE_CE ||
+ e == EL_INTERNAL_CASCADE_CE_ACTIVE)) ||
+ (key == KSYM_Delete &&
+ (e == EL_INTERNAL_CASCADE_GE ||
+ e == EL_INTERNAL_CASCADE_GE_ACTIVE)))
+ break;
+ }
+
+ if (i < num_editor_elements)
+ {
+ element_shift = i;
+
+ if (element_shift > num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS)
+ element_shift = num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS;
+
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
+
+ ModifyEditorElementList();
+ }
+#endif
+
+ break;
+
case KSYM_Escape:
if (edit_mode == ED_MODE_DRAWING)
{
- RequestExitLevelEditor(setup.ask_on_escape);
+ RequestExitLevelEditor(setup.ask_on_escape_editor);
}
else if (edit_mode == ED_MODE_INFO)
{