#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_CONTINUOUS_SNAPPING (GADGET_ID_CHECKBUTTON_FIRST + 11)
-#define GADGET_ID_BLOCK_SNAP_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 12)
-#define GADGET_ID_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 13)
-#define GADGET_ID_SP_BLOCK_LAST_FIELD (GADGET_ID_CHECKBUTTON_FIRST + 14)
-#define GADGET_ID_INSTANT_RELOCATION (GADGET_ID_CHECKBUTTON_FIRST + 15)
-#define GADGET_ID_USE_START_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 16)
-#define GADGET_ID_USE_ARTWORK_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 17)
-#define GADGET_ID_USE_EXPLOSION_ELEMENT (GADGET_ID_CHECKBUTTON_FIRST + 18)
+#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_INSTANT_RELOCATION (GADGET_ID_CHECKBUTTON_FIRST + 14)
+#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_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 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_CONTINUOUS_SNAPPING 9
-#define ED_CHECKBUTTON_ID_BLOCK_SNAP_FIELD 10
-#define ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD 11
-#define ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD 12
-#define ED_CHECKBUTTON_ID_INSTANT_RELOCATION 13
-#define ED_CHECKBUTTON_ID_USE_START_ELEMENT 14
-#define ED_CHECKBUTTON_ID_USE_ARTWORK_ELEMENT 15
-#define ED_CHECKBUTTON_ID_USE_EXPLOSION_ELEMENT 16
+#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_INSTANT_RELOCATION 12
+#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_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_NUM_CHECKBUTTONS 46
-#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_INITIAL_GRAVITY
+#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
NULL, " ", "height",
},
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
0, 999,
GADGET_ID_LEVEL_GEMSLIMIT_DOWN, GADGET_ID_LEVEL_GEMSLIMIT_UP,
GADGET_ID_LEVEL_GEMSLIMIT_TEXT, GADGET_ID_NONE,
NULL, "number of gems to collect:", NULL
},
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(7),
0, 9999,
GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP,
GADGET_ID_LEVEL_TIMELIMIT_TEXT, GADGET_ID_NONE,
"time or step limit to solve level:", NULL, NULL
},
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(9),
0, 255,
GADGET_ID_LEVEL_TIMESCORE_DOWN, GADGET_ID_LEVEL_TIMESCORE_UP,
GADGET_ID_LEVEL_TIMESCORE_TEXT, GADGET_ID_NONE,
#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" },
{ 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" },
{ 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_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_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 }
/* ---------- level and editor settings ---------------------------------- */
{
- -1, ED_LEVEL_SETTINGS_YPOS(8),
+ -1, ED_LEVEL_SETTINGS_YPOS(7),
GADGET_ID_TIME_OR_STEPS, GADGET_ID_LEVEL_TIMELIMIT_UP,
-1,
options_time_or_steps,
NULL, "(0 => no limit)", "time or step limit"
},
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(11),
GADGET_ID_GAME_ENGINE_TYPE, GADGET_ID_NONE,
-1,
options_game_engine_type,
"game engine:", NULL, "game engine"
},
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(12),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
GADGET_ID_WIND_DIRECTION, GADGET_ID_NONE,
-1,
options_wind_direction,
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"
},
int gd_x, gd_y;
int x, y;
int width, height;
+ int wheel_x, wheel_y;
+ int wheel_width, wheel_height;
int type;
int gadget_id;
char *infotext;
ED_SCROLLBAR_XPOS, ED_SCROLLBAR_YPOS,
SX + ED_SCROLL_HORIZONTAL_XPOS, SY + ED_SCROLL_HORIZONTAL_YPOS,
ED_SCROLL_HORIZONTAL_XSIZE, ED_SCROLL_HORIZONTAL_YSIZE,
+ 0, 0,
+ SX + SXSIZE + SX, WIN_YSIZE,
GD_TYPE_SCROLLBAR_HORIZONTAL,
GADGET_ID_SCROLL_HORIZONTAL,
"scroll level editing area horizontally"
ED_SCROLLBAR_XPOS, ED_SCROLLBAR_YPOS,
SX + ED_SCROLL_VERTICAL_XPOS, SY + ED_SCROLL_VERTICAL_YPOS,
ED_SCROLL_VERTICAL_XSIZE, ED_SCROLL_VERTICAL_YSIZE,
+ 0, 0,
+ SX + SXSIZE + SX, WIN_YSIZE,
GD_TYPE_SCROLLBAR_VERTICAL,
GADGET_ID_SCROLL_VERTICAL,
"scroll level editing area vertically"
ED_SCROLLBAR2_XPOS, ED_SCROLLBAR2_YPOS,
DX + ED_SCROLL2_VERTICAL_XPOS, DY + ED_SCROLL2_VERTICAL_YPOS,
ED_SCROLL2_VERTICAL_XSIZE, ED_SCROLL2_VERTICAL_YSIZE,
+ SX + SXSIZE + SX, 0,
+ WIN_XSIZE - (SX + SXSIZE + SX), WIN_YSIZE,
GD_TYPE_SCROLLBAR_VERTICAL,
GADGET_ID_SCROLL_LIST_VERTICAL,
"scroll element list vertically"
{
/* ---------- 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,
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,
/* ---------- 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"
static int element_shift = 0;
+static int editor_el_players[] =
+{
+ EL_PLAYER_1,
+ EL_PLAYER_2,
+ EL_PLAYER_3,
+ EL_PLAYER_4
+};
+static int *editor_el_players_ptr = editor_el_players;
+static int num_editor_el_players = SIZEOF_ARRAY_INT(editor_el_players);
+
static int editor_hl_boulderdash[] =
{
EL_INTERNAL_CASCADE_BD_ACTIVE,
static int editor_el_boulderdash[] =
{
+#if 1
+ EL_EMPTY,
+ EL_SAND,
+ EL_BD_ROCK,
+ EL_BD_DIAMOND,
+
+ EL_STEELWALL,
+ EL_BD_WALL,
+ EL_BD_EXPANDABLE_WALL,
+ EL_BD_MAGIC_WALL,
+
+ EL_BD_AMOEBA,
+ EL_BD_BUTTERFLY_UP,
+ EL_BD_FIREFLY_UP,
+ EL_EXIT_CLOSED,
+
+ EL_BD_BUTTERFLY_LEFT,
+ EL_BD_FIREFLY_LEFT,
+ EL_BD_BUTTERFLY_RIGHT,
+ EL_BD_FIREFLY_RIGHT,
+
+ EL_EMPTY,
+ EL_BD_BUTTERFLY_DOWN,
+ EL_BD_FIREFLY_DOWN,
+ EL_EXIT_OPEN,
+
+#else
+
EL_PLAYER_1,
EL_EMPTY,
EL_SAND,
EL_BD_AMOEBA,
EL_BD_BUTTERFLY_DOWN,
EL_BD_FIREFLY_DOWN,
- EL_EMPTY,
+ EL_BD_EXPANDABLE_WALL,
+#endif
};
static int *editor_hl_boulderdash_ptr = editor_hl_boulderdash;
static int *editor_el_boulderdash_ptr = editor_el_boulderdash;
static int editor_el_emerald_mine[] =
{
- EL_PLAYER_1,
- EL_PLAYER_2,
- EL_PLAYER_3,
- EL_PLAYER_4,
+#if 1
+ EL_SAND,
+ EL_ROCK,
+ EL_QUICKSAND_EMPTY,
+ EL_QUICKSAND_FULL,
+
+ EL_STEELWALL,
+ EL_WALL,
+ EL_WALL_SLIPPERY,
+ EL_MAGIC_WALL,
+
+ EL_EMERALD,
+ EL_DIAMOND,
+ EL_NUT,
+ EL_BOMB,
+
+ EL_WALL_EMERALD,
+ EL_WALL_DIAMOND,
+ EL_DYNAMITE,
+ EL_DYNAMITE_ACTIVE,
+
+ EL_YAMYAM,
+ EL_BUG_UP,
+ EL_SPACESHIP_UP,
+ EL_ROBOT,
+
+ EL_BUG_LEFT,
+ EL_SPACESHIP_LEFT,
+ EL_BUG_RIGHT,
+ EL_SPACESHIP_RIGHT,
+
+ EL_ROBOT_WHEEL,
+ EL_BUG_DOWN,
+ EL_SPACESHIP_DOWN,
+ EL_INVISIBLE_WALL,
+
+ EL_ACID_POOL_TOPLEFT,
+ EL_ACID,
+ EL_ACID_POOL_TOPRIGHT,
+ EL_AMOEBA_DROP,
+
+ EL_ACID_POOL_BOTTOMLEFT,
+ EL_ACID_POOL_BOTTOM,
+ EL_ACID_POOL_BOTTOMRIGHT,
+ EL_AMOEBA_WET,
+
+ EL_EM_KEY_1,
+ EL_EM_KEY_2,
+ EL_EM_KEY_3,
+ EL_EM_KEY_4,
+
+ EL_EM_GATE_1,
+ EL_EM_GATE_2,
+ EL_EM_GATE_3,
+ EL_EM_GATE_4,
+
+ EL_EM_GATE_1_GRAY,
+ EL_EM_GATE_2_GRAY,
+ EL_EM_GATE_3_GRAY,
+ EL_EM_GATE_4_GRAY,
+
+#else
EL_PLAYER_1,
- EL_EMPTY,
+ EL_PLAYER_2,
EL_SAND,
EL_ROCK,
EL_EM_GATE_2_GRAY,
EL_EM_GATE_3_GRAY,
EL_EM_GATE_4_GRAY,
+#endif
};
static int *editor_hl_emerald_mine_ptr = editor_hl_emerald_mine;
static int *editor_el_emerald_mine_ptr = editor_el_emerald_mine;
static int editor_el_emerald_mine_club[] =
{
+#if 1
+ EL_EMC_KEY_5,
+ EL_EMC_KEY_6,
+ EL_EMC_KEY_7,
+ EL_EMC_KEY_8,
+
+ EL_EMC_GATE_5,
+ EL_EMC_GATE_6,
+ EL_EMC_GATE_7,
+ EL_EMC_GATE_8,
+
+ EL_EMC_GATE_5_GRAY,
+ EL_EMC_GATE_6_GRAY,
+ EL_EMC_GATE_7_GRAY,
+ EL_EMC_GATE_8_GRAY,
+
+ EL_EMC_STEELWALL_1,
+ EL_EMC_STEELWALL_2,
+ EL_EMC_STEELWALL_3,
+ EL_EMC_STEELWALL_4,
+
+ EL_EMC_WALL_13,
+ EL_EMC_WALL_14,
+ EL_EMC_WALL_15,
+ EL_EMC_WALL_16,
+
+ EL_EMC_WALL_SLIPPERY_1,
+ EL_EMC_WALL_SLIPPERY_2,
+ EL_EMC_WALL_SLIPPERY_3,
+ EL_EMC_WALL_SLIPPERY_4,
+
+ EL_EMC_WALL_1,
+ EL_EMC_WALL_2,
+ EL_EMC_WALL_3,
+ EL_EMC_WALL_4,
+
+ EL_EMC_WALL_5,
+ EL_EMC_WALL_6,
+ EL_EMC_WALL_7,
+ EL_EMC_WALL_8,
+
+ EL_EMC_WALL_9,
+ EL_EMC_WALL_10,
+ EL_EMC_WALL_11,
+ EL_EMC_WALL_12,
+
+ EL_EMC_GRASS,
+ EL_EMC_FAKE_GRASS,
+ EL_EMC_PLANT,
+ EL_EMC_DRIPPER,
+
+ EL_EMC_MAGIC_BALL,
+ EL_EMC_MAGIC_BALL_SWITCH,
+ EL_SPRING,
+ EL_EMC_SPRING_BUMPER,
+
+ EL_EMC_LENSES,
+ EL_EMC_MAGNIFIER,
+ EL_EM_DYNAMITE,
+ EL_EM_DYNAMITE_ACTIVE,
+
+ EL_BALLOON,
+ EL_YAMYAM_UP,
+ EL_BALLOON_SWITCH_UP,
+ EL_BALLOON_SWITCH_ANY,
+
+ EL_YAMYAM_LEFT,
+ EL_BALLOON_SWITCH_LEFT,
+ EL_YAMYAM_RIGHT,
+ EL_BALLOON_SWITCH_RIGHT,
+
+ EL_EMC_ANDROID,
+ EL_YAMYAM_DOWN,
+ EL_BALLOON_SWITCH_DOWN,
+ EL_BALLOON_SWITCH_NONE,
+
+#else
+
EL_EMC_KEY_5,
EL_EMC_KEY_6,
EL_EMC_KEY_7,
EL_YAMYAM_RIGHT,
EL_YAMYAM_UP,
EL_YAMYAM_DOWN,
+#endif
};
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;
static int num_editor_hl_emerald_mine_club=SIZEOF_ARRAY_INT(editor_hl_emerald_mine_club);
static int num_editor_el_emerald_mine_club=SIZEOF_ARRAY_INT(editor_el_emerald_mine_club);
-static int editor_hl_more[] =
+static int editor_hl_rnd[] =
{
EL_INTERNAL_CASCADE_RND_ACTIVE,
EL_CHAR('R'),
#endif
};
-static int editor_el_more[] =
+static int editor_el_rnd[] =
{
+#if 1
+ EL_KEY_1,
+ EL_KEY_2,
+ EL_KEY_3,
+ EL_KEY_4,
+
+ EL_GATE_1,
+ EL_GATE_2,
+ EL_GATE_3,
+ EL_GATE_4,
+
+ EL_GATE_1_GRAY,
+ EL_GATE_2_GRAY,
+ EL_GATE_3_GRAY,
+ EL_GATE_4_GRAY,
+
+ EL_ARROW_LEFT,
+ EL_ARROW_RIGHT,
+ EL_ARROW_UP,
+ EL_ARROW_DOWN,
+
+ EL_AMOEBA_DEAD,
+ EL_AMOEBA_DRY,
+ EL_AMOEBA_FULL,
+ EL_GAME_OF_LIFE,
+
+ EL_EMERALD_YELLOW,
+ EL_EMERALD_RED,
+ EL_EMERALD_PURPLE,
+ EL_BIOMAZE,
+
+ EL_WALL_EMERALD_YELLOW,
+ EL_WALL_EMERALD_RED,
+ EL_WALL_EMERALD_PURPLE,
+ EL_WALL_BD_DIAMOND,
+
+ EL_SPEED_PILL,
+ EL_PACMAN_UP,
+ EL_TIME_ORB_FULL,
+ EL_TIME_ORB_EMPTY,
+
+ EL_PACMAN_LEFT,
+ EL_DARK_YAMYAM,
+ EL_PACMAN_RIGHT,
+ EL_EMPTY,
+
+ EL_BLACK_ORB,
+ EL_PACMAN_DOWN,
+ EL_LAMP,
+ EL_LAMP_ACTIVE,
+
+ EL_DYNABOMB_INCREASE_NUMBER,
+ EL_DYNABOMB_INCREASE_SIZE,
+ EL_DYNABOMB_INCREASE_POWER,
+ EL_STONEBLOCK,
+
+ EL_MOLE,
+ EL_PENGUIN,
+ EL_PIG,
+ EL_DRAGON,
+
+ EL_BUG,
+ EL_MOLE_UP,
+ EL_BD_BUTTERFLY,
+ EL_BD_FIREFLY,
+
+ EL_MOLE_LEFT,
+ EL_SATELLITE,
+ EL_MOLE_RIGHT,
+ EL_PACMAN,
+
+ EL_SPACESHIP,
+ EL_MOLE_DOWN,
+ EL_INVISIBLE_STEELWALL,
+ EL_INVISIBLE_WALL,
+
+ EL_EXPANDABLE_WALL,
+ EL_EXPANDABLE_WALL_HORIZONTAL,
+ EL_EXPANDABLE_WALL_VERTICAL,
+ EL_EXPANDABLE_WALL_ANY,
+
+#else
+
EL_KEY_1,
EL_KEY_2,
EL_KEY_3,
EL_ARROW_UP,
EL_ARROW_DOWN,
+ EL_AMOEBA_DEAD,
+ EL_AMOEBA_DRY,
EL_AMOEBA_FULL,
+ EL_EMPTY,
+
+ EL_EMPTY,
EL_EMERALD_YELLOW,
EL_EMERALD_RED,
EL_EMERALD_PURPLE,
EL_INVISIBLE_WALL,
EL_SPEED_PILL,
EL_BLACK_ORB,
+#endif
};
-static int *editor_hl_more_ptr = editor_hl_more;
-static int *editor_el_more_ptr = editor_el_more;
-static int num_editor_hl_more = SIZEOF_ARRAY_INT(editor_hl_more);
-static int num_editor_el_more = SIZEOF_ARRAY_INT(editor_el_more);
+static int *editor_hl_rnd_ptr = editor_hl_rnd;
+static int *editor_el_rnd_ptr = editor_el_rnd;
+static int num_editor_hl_rnd = SIZEOF_ARRAY_INT(editor_hl_rnd);
+static int num_editor_el_rnd = SIZEOF_ARRAY_INT(editor_el_rnd);
static int editor_hl_sokoban[] =
{
static int editor_el_supaplex[] =
{
+#if 1
+ EL_SP_MURPHY,
+ EL_EMPTY,
+ EL_SP_BASE,
+ EL_SP_BUGGY_BASE,
+
+ EL_SP_INFOTRON,
+ EL_SP_ZONK,
+ EL_SP_SNIKSNAK,
+ EL_SP_ELECTRON,
+
+ EL_SP_DISK_RED,
+ EL_SP_DISK_ORANGE,
+ EL_SP_DISK_YELLOW,
+ EL_SP_TERMINAL,
+
+ EL_SP_EXIT_CLOSED,
+ EL_SP_PORT_HORIZONTAL,
+ EL_SP_PORT_VERTICAL,
+ EL_SP_PORT_ANY,
+
+ EL_SP_PORT_LEFT,
+ EL_SP_PORT_RIGHT,
+ EL_SP_PORT_UP,
+ EL_SP_PORT_DOWN,
+
+ EL_SP_GRAVITY_PORT_LEFT,
+ EL_SP_GRAVITY_PORT_RIGHT,
+ EL_SP_GRAVITY_PORT_UP,
+ EL_SP_GRAVITY_PORT_DOWN,
+
+ EL_SP_HARDWARE_GRAY,
+ EL_SP_HARDWARE_GREEN,
+ EL_SP_HARDWARE_BLUE,
+ EL_SP_HARDWARE_RED,
+
+ EL_SP_HARDWARE_BASE_1,
+ EL_SP_HARDWARE_BASE_2,
+ EL_SP_HARDWARE_BASE_3,
+ EL_SP_HARDWARE_BASE_4,
+
+ EL_SP_HARDWARE_BASE_5,
+ EL_SP_HARDWARE_BASE_6,
+ EL_SP_HARDWARE_YELLOW,
+ EL_SP_CHIP_TOP,
+
+ EL_SP_CHIP_SINGLE,
+ EL_SP_CHIP_LEFT,
+ EL_SP_CHIP_RIGHT,
+ EL_SP_CHIP_BOTTOM,
+
+#else
+
#if 1
EL_EMPTY,
#else
EL_SP_HARDWARE_BASE_6,
EL_SP_CHIP_TOP,
EL_SP_CHIP_BOTTOM,
+#endif
};
static int *editor_hl_supaplex_ptr = editor_hl_supaplex;
static int *editor_el_supaplex_ptr = editor_el_supaplex;
static int editor_el_diamond_caves[] =
{
+#if 1
EL_PEARL,
EL_CRYSTAL,
EL_WALL_PEARL,
EL_CONVEYOR_BELT_3_SWITCH_RIGHT,
EL_CONVEYOR_BELT_4_SWITCH_RIGHT,
- EL_SWITCHGATE_OPEN,
EL_SWITCHGATE_CLOSED,
+ EL_SWITCHGATE_OPEN,
EL_SWITCHGATE_SWITCH_UP,
+ EL_SWITCHGATE_SWITCH_DOWN,
+
+ EL_TIMEGATE_CLOSED,
+ EL_TIMEGATE_OPEN,
+ EL_TIMEGATE_SWITCH,
+ EL_EMPTY,
+
+ EL_SIGN_EXCLAMATION,
+ EL_SIGN_STOP,
+ EL_LIGHT_SWITCH,
+ EL_LIGHT_SWITCH_ACTIVE,
+
+ EL_STEELWALL_SLIPPERY,
+ EL_INVISIBLE_SAND,
+ EL_LANDMINE,
+ EL_EMPTY,
+
+ EL_SHIELD_NORMAL,
+ EL_SHIELD_DEADLY,
+ EL_EXTRA_TIME,
EL_EMPTY,
EL_ENVELOPE_1,
EL_ENVELOPE_3,
EL_ENVELOPE_4,
+#else
+
+ EL_PEARL,
+ EL_CRYSTAL,
+ EL_WALL_PEARL,
+ EL_WALL_CRYSTAL,
+
+ EL_CONVEYOR_BELT_1_LEFT,
+ EL_CONVEYOR_BELT_1_MIDDLE,
+ EL_CONVEYOR_BELT_1_RIGHT,
+ EL_CONVEYOR_BELT_1_SWITCH_MIDDLE,
+
+ EL_CONVEYOR_BELT_2_LEFT,
+ EL_CONVEYOR_BELT_2_MIDDLE,
+ EL_CONVEYOR_BELT_2_RIGHT,
+ EL_CONVEYOR_BELT_2_SWITCH_MIDDLE,
+
+ EL_CONVEYOR_BELT_3_LEFT,
+ EL_CONVEYOR_BELT_3_MIDDLE,
+ EL_CONVEYOR_BELT_3_RIGHT,
+ EL_CONVEYOR_BELT_3_SWITCH_MIDDLE,
+
+ EL_CONVEYOR_BELT_4_LEFT,
+ EL_CONVEYOR_BELT_4_MIDDLE,
+ EL_CONVEYOR_BELT_4_RIGHT,
+ EL_CONVEYOR_BELT_4_SWITCH_MIDDLE,
+
+ EL_CONVEYOR_BELT_1_SWITCH_LEFT,
+ EL_CONVEYOR_BELT_2_SWITCH_LEFT,
+ EL_CONVEYOR_BELT_3_SWITCH_LEFT,
+ EL_CONVEYOR_BELT_4_SWITCH_LEFT,
+
+ EL_CONVEYOR_BELT_1_SWITCH_RIGHT,
+ EL_CONVEYOR_BELT_2_SWITCH_RIGHT,
+ EL_CONVEYOR_BELT_3_SWITCH_RIGHT,
+ EL_CONVEYOR_BELT_4_SWITCH_RIGHT,
+
+ EL_SWITCHGATE_OPEN,
+ EL_SWITCHGATE_CLOSED,
+ EL_SWITCHGATE_SWITCH_UP,
+ EL_SWITCHGATE_SWITCH_DOWN,
+
+ EL_ENVELOPE_1,
+ EL_ENVELOPE_2,
+ EL_ENVELOPE_3,
+ EL_ENVELOPE_4,
+
EL_TIMEGATE_CLOSED,
EL_TIMEGATE_OPEN,
EL_TIMEGATE_SWITCH,
EL_SHIELD_DEADLY,
EL_EXTRA_TIME,
EL_EMPTY,
+
+#endif
};
static int *editor_hl_diamond_caves_ptr = editor_hl_diamond_caves;
static int *editor_el_diamond_caves_ptr = editor_el_diamond_caves;
EL_CUSTOM_START + 252,
EL_CUSTOM_START + 253,
EL_CUSTOM_START + 254,
- EL_CUSTOM_START + 255,
-
- EL_TRIGGER_PLAYER,
- EL_TRIGGER_ELEMENT,
- EL_TRIGGER_CE_VALUE,
- EL_TRIGGER_CE_SCORE,
-
- EL_EMPTY,
- EL_EMPTY,
- EL_CURRENT_CE_VALUE,
- EL_CURRENT_CE_SCORE
+ EL_CUSTOM_START + 255
};
static int *editor_hl_custom_ptr = editor_hl_custom;
static int *editor_el_custom_ptr = editor_el_custom;
static int num_editor_hl_group = SIZEOF_ARRAY_INT(editor_hl_group);
static int num_editor_el_group = SIZEOF_ARRAY_INT(editor_el_group);
+static int editor_hl_reference[] =
+{
+ EL_INTERNAL_CASCADE_REF_ACTIVE,
+ EL_CHAR('R'),
+ EL_CHAR('E'),
+ EL_CHAR('F')
+};
+
+static int editor_el_reference[] =
+{
+ EL_TRIGGER_PLAYER,
+ EL_TRIGGER_ELEMENT,
+ EL_TRIGGER_CE_VALUE,
+ EL_TRIGGER_CE_SCORE,
+
+ EL_SELF,
+ EL_ANY_ELEMENT,
+ EL_CURRENT_CE_VALUE,
+ EL_CURRENT_CE_SCORE,
+
+ EL_LAST_CE_8,
+ EL_LAST_CE_7,
+ EL_LAST_CE_6,
+ EL_LAST_CE_5,
+
+ EL_LAST_CE_4,
+ EL_LAST_CE_3,
+ EL_LAST_CE_2,
+ EL_LAST_CE_1,
+
+ EL_NEXT_CE_1,
+ EL_NEXT_CE_2,
+ EL_NEXT_CE_3,
+ EL_NEXT_CE_4,
+
+ EL_NEXT_CE_5,
+ EL_NEXT_CE_6,
+ EL_NEXT_CE_7,
+ EL_NEXT_CE_8,
+};
+static int *editor_hl_reference_ptr = editor_hl_reference;
+static int *editor_el_reference_ptr = editor_el_reference;
+static int num_editor_hl_reference = SIZEOF_ARRAY_INT(editor_hl_reference);
+static int num_editor_el_reference = SIZEOF_ARRAY_INT(editor_el_reference);
+
static int editor_hl_user_defined[] =
{
EL_INTERNAL_CASCADE_USER_ACTIVE,
static int *editor_elements = NULL; /* dynamically allocated */
static int num_editor_elements = 0; /* dynamically determined */
+static boolean setup_editor_show_always = TRUE;
+static boolean setup_editor_cascade_never = FALSE;
+
+static int editor_hl_unused[] = { EL_EMPTY };
+static int *editor_hl_unused_ptr = editor_hl_unused;
+static int num_editor_hl_unused = 0;
+
static struct
{
boolean *setup_value;
}
editor_elements_info[] =
{
+ {
+ &setup_editor_show_always,
+ &setup_editor_cascade_never,
+ &editor_hl_unused_ptr, &num_editor_hl_unused,
+ &editor_el_players_ptr, &num_editor_el_players
+ },
{
&setup.editor.el_boulderdash,
&setup.editor_cascade.el_bd,
{
&setup.editor.el_more,
&setup.editor_cascade.el_rnd,
- &editor_hl_more_ptr, &num_editor_hl_more,
- &editor_el_more_ptr, &num_editor_el_more
+ &editor_hl_rnd_ptr, &num_editor_hl_rnd,
+ &editor_el_rnd_ptr, &num_editor_el_rnd
},
{
&setup.editor.el_sokoban,
&editor_hl_group_ptr, &num_editor_hl_group,
&editor_el_group_ptr, &num_editor_el_group
},
+ {
+ &setup.editor.el_custom,
+ &setup.editor_cascade.el_ref,
+ &editor_hl_reference_ptr, &num_editor_hl_reference,
+ &editor_el_reference_ptr, &num_editor_el_reference
+ },
{
&setup.editor.el_user_defined,
&setup.editor_cascade.el_user,
GDI_SCROLLBAR_ITEMS_MAX, items_max,
GDI_SCROLLBAR_ITEMS_VISIBLE, items_visible,
GDI_SCROLLBAR_ITEM_POSITION, item_position,
+ GDI_WHEEL_AREA_X, scrollbar_info[i].wheel_x,
+ GDI_WHEEL_AREA_Y, scrollbar_info[i].wheel_y,
+ GDI_WHEEL_AREA_WIDTH, scrollbar_info[i].wheel_width,
+ GDI_WHEEL_AREA_HEIGHT, scrollbar_info[i].wheel_height,
GDI_STATE, GD_BUTTON_UNPRESSED,
GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
/* 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);
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_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] =
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,
#if 1
{ EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
+ { EL_LIGHT_SWITCH, &level.time_light, TEXT_DURATION },
{ EL_LIGHT_SWITCH_ACTIVE, &level.time_light, TEXT_DURATION },
{ EL_SHIELD_NORMAL, &level.shield_normal_time, TEXT_DURATION },
{ EL_SHIELD_DEADLY, &level.shield_deadly_time, TEXT_DURATION },
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 ?
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);
DrawAreaBorder(sx, sy, sx, sy);
}
+static void CheckLevelBorderElement(boolean redraw_playfield)
+{
+ int last_border_element = BorderElement;
+
+ SetBorderElement();
+
+ if (redraw_playfield && BorderElement != last_border_element)
+ DrawMiniLevel(ed_fieldx, ed_fieldy, level_xpos, level_ypos);
+}
+
static void CopyLevelToUndoBuffer(int mode)
{
static boolean accumulated_undo = FALSE;
boolean new_undo_buffer_position = TRUE;
- int last_border_element;
int x, y;
switch (mode)
UndoBuffer[undo_buffer_position][x][y] = Feld[x][y];
/* check if drawing operation forces change of border style */
- last_border_element = BorderElement;
- SetBorderElement();
- if (BorderElement != last_border_element)
- DrawMiniLevel(ed_fieldx, ed_fieldy, level_xpos, level_ypos);
+ CheckLevelBorderElement(TRUE);
level.changed = TRUE;
}
for (x = 0; x < lev_fieldx; x++)
for (y = 0; y < lev_fieldy; y++)
Feld[x][y] = UndoBuffer[undo_buffer_position][x][y];
- DrawMiniLevel(ed_fieldx, ed_fieldy, level_xpos,level_ypos);
+
+ /* check if undo operation forces change of border style */
+ CheckLevelBorderElement(FALSE);
+
+ DrawMiniLevel(ed_fieldx, ed_fieldy, level_xpos, level_ypos);
+
break;
case GADGET_ID_INFO:
}
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)
{
case KSYM_Insert:
case KSYM_Delete:
+
+ /* this is needed to prevent interference with running "True X-Mouse" */
+ if (GetKeyModStateFromEvents() & KMOD_Control)
+ break;
+
+ /* check for last or next editor cascade block in element list */
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)))
+ if ((key == KSYM_Insert && i == element_shift) ||
+ (key == KSYM_Delete && new_element_shift > element_shift))
break;
+
+ /* jump to next cascade block (or to start of element list) */
+ if (i == 0 || IS_EDITOR_CASCADE(editor_elements[i]))
+ new_element_shift = i;
}
if (i < num_editor_elements)
- {
- element_shift = i;
+ element_shift = new_element_shift;
- if (element_shift > num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS)
- element_shift = num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS;
+ 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);
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
- ModifyEditorElementList();
- }
+ ModifyEditorElementList();
break;
DrawDrawingWindow();
edit_mode = ED_MODE_DRAWING;
}
+
break;
default: