GADGET_ID_LEVELSET_NUM_LEVELS_DOWN,
GADGET_ID_LEVELSET_NUM_LEVELS_TEXT,
GADGET_ID_LEVELSET_NUM_LEVELS_UP,
+ GADGET_ID_BD_CYCLE_DELAY_MS_DOWN,
+ GADGET_ID_BD_CYCLE_DELAY_MS_TEXT,
+ GADGET_ID_BD_CYCLE_DELAY_MS_UP,
+ GADGET_ID_BD_CYCLE_DELAY_C64_DOWN,
+ GADGET_ID_BD_CYCLE_DELAY_C64_TEXT,
+ GADGET_ID_BD_CYCLE_DELAY_C64_UP,
+ GADGET_ID_BD_HATCHING_DELAY_CYCLES_DOWN,
+ GADGET_ID_BD_HATCHING_DELAY_CYCLES_TEXT,
+ GADGET_ID_BD_HATCHING_DELAY_CYCLES_UP,
+ GADGET_ID_BD_HATCHING_DELAY_SECONDS_DOWN,
+ GADGET_ID_BD_HATCHING_DELAY_SECONDS_TEXT,
+ GADGET_ID_BD_HATCHING_DELAY_SECONDS_UP,
GADGET_ID_ELEMENT_VALUE1_DOWN,
GADGET_ID_ELEMENT_VALUE1_TEXT,
GADGET_ID_ELEMENT_VALUE1_UP,
GADGET_ID_TIME_OR_STEPS,
GADGET_ID_TIME_SCORE_BASE,
GADGET_ID_GAME_ENGINE_TYPE,
+ GADGET_ID_BD_SCHEDULING_TYPE,
GADGET_ID_LEVELSET_SAVE_MODE,
GADGET_ID_WIND_DIRECTION,
GADGET_ID_PLAYER_SPEED,
GADGET_ID_RANDOM_PERCENTAGE,
GADGET_ID_RANDOM_QUANTITY,
GADGET_ID_RANDOM_RESTRICTED,
+ GADGET_ID_BD_INTERMISSION,
+ GADGET_ID_BD_PAL_TIMING,
+ GADGET_ID_BD_LINE_SHIFTING_BORDERS,
+ GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+ GADGET_ID_BD_SHORT_EXPLOSIONS,
GADGET_ID_STICK_ELEMENT,
GADGET_ID_EM_SLIPPERY_GEMS,
GADGET_ID_EM_EXPLODES_BY_FIRE,
ED_COUNTER_ID_LEVEL_RANDOM_SEED,
ED_COUNTER_ID_LEVELSET_NUM_LEVELS,
ED_COUNTER_ID_LEVEL_RANDOM,
+ ED_COUNTER_ID_BD_CYCLE_DELAY_MS,
+ ED_COUNTER_ID_BD_CYCLE_DELAY_C64,
+ ED_COUNTER_ID_BD_HATCHING_DELAY_CYCLES,
+ ED_COUNTER_ID_BD_HATCHING_DELAY_SECONDS,
ED_COUNTER_ID_ELEMENT_VALUE1,
ED_COUNTER_ID_ELEMENT_VALUE2,
ED_COUNTER_ID_ELEMENT_VALUE3,
ED_SELECTBOX_ID_TIME_OR_STEPS,
ED_SELECTBOX_ID_TIME_SCORE_BASE,
ED_SELECTBOX_ID_GAME_ENGINE_TYPE,
+ ED_SELECTBOX_ID_BD_SCHEDULING_TYPE,
ED_SELECTBOX_ID_LEVELSET_SAVE_MODE,
ED_SELECTBOX_ID_WIND_DIRECTION,
ED_SELECTBOX_ID_PLAYER_SPEED,
#define ED_SELECTBOX_ID_LEVELSET_FIRST ED_SELECTBOX_ID_LEVELSET_SAVE_MODE
#define ED_SELECTBOX_ID_LEVELSET_LAST ED_SELECTBOX_ID_LEVELSET_SAVE_MODE
+#define ED_SELECTBOX_ID_ENGINE_FIRST ED_SELECTBOX_ID_BD_SCHEDULING_TYPE
+#define ED_SELECTBOX_ID_ENGINE_LAST ED_SELECTBOX_ID_BD_SCHEDULING_TYPE
+
#define ED_SELECTBOX_ID_CUSTOM1_FIRST ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE
#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
ED_CHECKBUTTON_ID_RANDOM_RESTRICTED,
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_3,
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2,
+ ED_CHECKBUTTON_ID_BD_INTERMISSION,
+ ED_CHECKBUTTON_ID_BD_PAL_TIMING,
+ ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
+ ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+ ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS,
ED_CHECKBUTTON_ID_STICK_ELEMENT,
ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS,
ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE,
#define ED_CHECKBUTTON_ID_EDITOR_FIRST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
#define ED_CHECKBUTTON_ID_EDITOR_LAST ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2
+#define ED_CHECKBUTTON_ID_ENGINE_FIRST ED_CHECKBUTTON_ID_BD_INTERMISSION
+#define ED_CHECKBUTTON_ID_ENGINE_LAST ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS
+
#define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC
#define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE
#define ED_CHECKBUTTON_ID_CUSTOM2_FIRST ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE
&random_placement_value,
"random element placement:", NULL, "in"
},
+ {
+ ED_COUNTER_ID_BD_CYCLE_DELAY_MS,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(3),
+ 50, 500,
+ GADGET_ID_BD_CYCLE_DELAY_MS_DOWN, GADGET_ID_BD_CYCLE_DELAY_MS_UP,
+ GADGET_ID_BD_CYCLE_DELAY_MS_TEXT, GADGET_ID_NONE,
+ &level.bd_cycle_delay_ms,
+ NULL, NULL, "game cycle delay (ms)"
+ },
+ {
+ ED_COUNTER_ID_BD_CYCLE_DELAY_C64,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(3),
+ 0, 32,
+ GADGET_ID_BD_CYCLE_DELAY_C64_DOWN, GADGET_ID_BD_CYCLE_DELAY_C64_UP,
+ GADGET_ID_BD_CYCLE_DELAY_C64_TEXT, GADGET_ID_NONE,
+ &level.bd_cycle_delay_c64,
+ NULL, NULL, "game cycle delay (C64-style)"
+ },
+ {
+ ED_COUNTER_ID_BD_HATCHING_DELAY_CYCLES,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
+ 1, 40,
+ GADGET_ID_BD_HATCHING_DELAY_CYCLES_DOWN, GADGET_ID_BD_HATCHING_DELAY_CYCLES_UP,
+ GADGET_ID_BD_HATCHING_DELAY_CYCLES_TEXT, GADGET_ID_NONE,
+ &level.bd_hatching_delay_cycles,
+ NULL, NULL, "hatching delay (cycles)"
+ },
+ {
+ ED_COUNTER_ID_BD_HATCHING_DELAY_SECONDS,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
+ 1, 40,
+ GADGET_ID_BD_HATCHING_DELAY_SECONDS_DOWN, GADGET_ID_BD_HATCHING_DELAY_SECONDS_UP,
+ GADGET_ID_BD_HATCHING_DELAY_SECONDS_TEXT, GADGET_ID_NONE,
+ &level.bd_hatching_delay_seconds,
+ NULL, NULL, "hatching delay (seconds)"
+ },
// ---------- element settings: configure (various elements) ----------------
{ -1, NULL }
};
+static struct ValueTextInfo options_bd_scheduling_type[] =
+{
+ { GD_SCHEDULING_MILLISECONDS, "Milliseconds" },
+ { GD_SCHEDULING_BD1, "BD1" },
+ { GD_SCHEDULING_BD2, "BD2" },
+ { GD_SCHEDULING_PLCK, "Construction Kit" },
+ { GD_SCHEDULING_CRDR, "Crazy Dream 7" },
+ { GD_SCHEDULING_BD1_ATARI, "Atari BD1" },
+ { GD_SCHEDULING_BD2_PLCK_ATARI, "Atari BD2 / PLCK" },
+
+ { -1, NULL }
+};
+
static struct ValueTextInfo *action_arg_modes[] =
{
options_action_mode_none,
&level.game_engine_type,
NULL, "game engine:", NULL, "game engine"
},
+ {
+ ED_SELECTBOX_ID_BD_SCHEDULING_TYPE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(1),
+ GADGET_ID_BD_SCHEDULING_TYPE, GADGET_ID_NONE,
+ -1,
+ options_bd_scheduling_type,
+ &level.bd_scheduling_type,
+ NULL, "scheduling type:", NULL, "level timing"
+ },
{
ED_SELECTBOX_ID_LEVELSET_SAVE_MODE,
ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
NULL, NULL,
"use template for custom elements", "use template for custom properties"
},
+ {
+ ED_CHECKBUTTON_ID_BD_INTERMISSION,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
+ GADGET_ID_BD_INTERMISSION, GADGET_ID_NONE,
+ &level.bd_intermission,
+ "Boulder Dash game engine settings:", NULL,
+ "intermission", "level is an intermission level"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_PAL_TIMING,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
+ GADGET_ID_BD_PAL_TIMING, GADGET_ID_NONE,
+ &level.bd_pal_timing,
+ NULL, NULL,
+ "PAL timing", "use slower timer (like PAL C64)"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
+ GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_NONE,
+ &level.bd_line_shifting_borders,
+ "Compatibility settings:", NULL,
+ "line-shifting borders", "use line-shifting wrap-around"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(7),
+ GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_NONE,
+ &level.bd_scan_first_and_last_row,
+ NULL, NULL,
+ "scan first and last row", "also process top/bottom border rows"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
+ GADGET_ID_BD_SHORT_EXPLOSIONS, GADGET_ID_NONE,
+ &level.bd_short_explosions,
+ NULL, NULL,
+ "short explosions", "use four game cycles for explosions"
+ },
// ---------- element settings: configure (various elements) ----------------
EL_BD_AMOEBA,
EL_BD_BUTTERFLY_UP,
EL_BD_FIREFLY_UP,
- EL_EXIT_CLOSED,
+ EL_BD_EXIT_CLOSED,
EL_BD_BUTTERFLY_LEFT,
EL_BD_FIREFLY_LEFT,
EL_BD_INBOX,
EL_BD_BUTTERFLY_DOWN,
EL_BD_FIREFLY_DOWN,
- EL_EXIT_OPEN,
+ EL_BD_EXIT_OPEN,
EL_BD_AMOEBA_2,
EL_BD_BUTTERFLY_2_UP,
static void DrawLevelConfigEngine(void)
{
+ int i;
+
+ // draw counter gadgets
+ if (level.bd_scheduling_type == GD_SCHEDULING_MILLISECONDS)
+ {
+ MapCounterButtons(ED_COUNTER_ID_BD_CYCLE_DELAY_MS);
+ MapCounterButtons(ED_COUNTER_ID_BD_HATCHING_DELAY_CYCLES);
+ }
+ else
+ {
+ MapCounterButtons(ED_COUNTER_ID_BD_CYCLE_DELAY_C64);
+ MapCounterButtons(ED_COUNTER_ID_BD_HATCHING_DELAY_SECONDS);
+ }
+
+ // draw checkbutton gadgets
+ for (i = ED_CHECKBUTTON_ID_ENGINE_FIRST; i <= ED_CHECKBUTTON_ID_ENGINE_LAST; i++)
+ MapCheckbuttonGadget(i);
+
+ // draw selectbox gadgets
+ for (i = ED_SELECTBOX_ID_ENGINE_FIRST; i <= ED_SELECTBOX_ID_ENGINE_LAST; i++)
+ MapSelectboxGadget(i);
}
static void DrawLevelConfigWindow(void)
}
#define TEXT_COLLECTING "Score for collecting"
+#define TEXT_COLLECTING_EXTRA "Score for extra diamonds"
#define TEXT_SMASHING "Score for smashing"
#define TEXT_SLURPING "Score for slurping robot"
#define TEXT_CRACKING "Score for cracking"
char *text;
} elements_with_counter[] =
{
- { EL_EMERALD, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_BD_DIAMOND, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_EMERALD_YELLOW, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_EMERALD_RED, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_EMERALD_PURPLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_SP_INFOTRON, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_DIAMOND, &level.score[SC_DIAMOND], TEXT_COLLECTING },
- { EL_CRYSTAL, &level.score[SC_CRYSTAL], TEXT_COLLECTING },
- { EL_PEARL, &level.score[SC_PEARL], TEXT_COLLECTING },
- { EL_BUG, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_UP, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_RIGHT,&level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_UP, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_SP_ELECTRON, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_SPACESHIP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_RIGHT,&level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { 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_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_LEFT, &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_SHIELD_NORMAL, &level.score[SC_SHIELD], TEXT_COLLECTING },
- { EL_SHIELD_DEADLY, &level.score[SC_SHIELD], TEXT_COLLECTING },
- { EL_EXTRA_TIME, &level.extra_time_score, TEXT_COLLECTING },
- { EL_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EMC_KEY_5, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EMC_KEY_6, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EMC_KEY_7, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EMC_KEY_8, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_DC_KEY_WHITE, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_MM_KETTLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_DF_CELL, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_MM_KEY, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_MM_LIGHTBALL, &level.score[SC_ELEM_BONUS], TEXT_COLLECTING },
- { EL_MM_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_AMOEBA_WET, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_AMOEBA_DRY, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_AMOEBA_FULL, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_BD_AMOEBA, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_EMC_DRIPPER, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_BD_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_DC_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_ROBOT_WHEEL, &level.time_wheel, TEXT_DURATION },
-
- { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
- { EL_DC_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 },
- { EL_EXTRA_TIME, &level.extra_time, TEXT_TIME_BONUS },
- { EL_TIME_ORB_FULL, &level.time_orb_time, TEXT_TIME_BONUS },
- { EL_GAME_OF_LIFE, &level.game_of_life[0], TEXT_GAME_OF_LIFE_1 },
- { EL_GAME_OF_LIFE, &level.game_of_life[1], TEXT_GAME_OF_LIFE_2 },
- { EL_GAME_OF_LIFE, &level.game_of_life[2], TEXT_GAME_OF_LIFE_3 },
- { EL_GAME_OF_LIFE, &level.game_of_life[3], TEXT_GAME_OF_LIFE_4 },
- { EL_BIOMAZE, &level.biomaze[0], TEXT_GAME_OF_LIFE_1 },
- { EL_BIOMAZE, &level.biomaze[1], TEXT_GAME_OF_LIFE_2 },
- { EL_BIOMAZE, &level.biomaze[2], TEXT_GAME_OF_LIFE_3 },
- { EL_BIOMAZE, &level.biomaze[3], TEXT_GAME_OF_LIFE_4 },
-
- { EL_EMC_ANDROID, &level.android_move_time, TEXT_MOVE_SPEED },
- { EL_EMC_ANDROID, &level.android_clone_time, TEXT_CLONE_SPEED },
- { 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_SPRING, &level.slurp_score, TEXT_SLURPING },
- { EL_SPRING_LEFT, &level.slurp_score, TEXT_SLURPING },
- { EL_SPRING_RIGHT, &level.slurp_score, TEXT_SLURPING },
- { EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION },
- { EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION },
- { EL_MM_FUSE_ACTIVE, &level.mm_time_fuse, TEXT_DELAY_OFF },
- { EL_MM_BOMB, &level.mm_time_bomb, TEXT_DELAY_EXPLODING },
- { EL_MM_GRAY_BALL, &level.mm_time_ball, TEXT_DELAY_CHANGING },
- { EL_MM_STEEL_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
- { EL_MM_WOODEN_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
-
- { -1, NULL, NULL }
+ { EL_EMERALD, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_BD_DIAMOND, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_BD_DIAMOND, &level.score[SC_DIAMOND_EXTRA], TEXT_COLLECTING_EXTRA },
+ { EL_EMERALD_YELLOW, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_EMERALD_RED, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_EMERALD_PURPLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_SP_INFOTRON, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_DIAMOND, &level.score[SC_DIAMOND], TEXT_COLLECTING },
+ { EL_CRYSTAL, &level.score[SC_CRYSTAL], TEXT_COLLECTING },
+ { EL_PEARL, &level.score[SC_PEARL], TEXT_COLLECTING },
+ { EL_BUG, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_UP, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_UP, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_SP_ELECTRON, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_SPACESHIP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { 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_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_LEFT, &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_SHIELD_NORMAL, &level.score[SC_SHIELD], TEXT_COLLECTING },
+ { EL_SHIELD_DEADLY, &level.score[SC_SHIELD], TEXT_COLLECTING },
+ { EL_EXTRA_TIME, &level.extra_time_score, TEXT_COLLECTING },
+ { EL_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_5, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_6, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_7, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_8, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_DC_KEY_WHITE, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_MM_KETTLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_DF_CELL, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_MM_KEY, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_MM_LIGHTBALL, &level.score[SC_ELEM_BONUS], TEXT_COLLECTING },
+ { EL_MM_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_AMOEBA_WET, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_AMOEBA_DRY, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_AMOEBA_FULL, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_BD_AMOEBA, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_EMC_DRIPPER, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_BD_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_DC_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_ROBOT_WHEEL, &level.time_wheel, TEXT_DURATION },
+ { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
+ { EL_DC_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 },
+ { EL_EXTRA_TIME, &level.extra_time, TEXT_TIME_BONUS },
+ { EL_TIME_ORB_FULL, &level.time_orb_time, TEXT_TIME_BONUS },
+ { EL_GAME_OF_LIFE, &level.game_of_life[0], TEXT_GAME_OF_LIFE_1 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[1], TEXT_GAME_OF_LIFE_2 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[2], TEXT_GAME_OF_LIFE_3 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[3], TEXT_GAME_OF_LIFE_4 },
+ { EL_BIOMAZE, &level.biomaze[0], TEXT_GAME_OF_LIFE_1 },
+ { EL_BIOMAZE, &level.biomaze[1], TEXT_GAME_OF_LIFE_2 },
+ { EL_BIOMAZE, &level.biomaze[2], TEXT_GAME_OF_LIFE_3 },
+ { EL_BIOMAZE, &level.biomaze[3], TEXT_GAME_OF_LIFE_4 },
+ { EL_EMC_ANDROID, &level.android_move_time, TEXT_MOVE_SPEED },
+ { EL_EMC_ANDROID, &level.android_clone_time, TEXT_CLONE_SPEED },
+ { 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_SPRING, &level.slurp_score, TEXT_SLURPING },
+ { EL_SPRING_LEFT, &level.slurp_score, TEXT_SLURPING },
+ { EL_SPRING_RIGHT, &level.slurp_score, TEXT_SLURPING },
+ { EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION },
+ { EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION },
+ { EL_MM_FUSE_ACTIVE, &level.mm_time_fuse, TEXT_DELAY_OFF },
+ { EL_MM_BOMB, &level.mm_time_bomb, TEXT_DELAY_EXPLODING },
+ { EL_MM_GRAY_BALL, &level.mm_time_ball, TEXT_DELAY_CHANGING },
+ { EL_MM_STEEL_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
+ { EL_MM_WOODEN_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
+
+ { -1, NULL, NULL }
};
static boolean checkPropertiesConfig(int element)
{
int i;
+ // special case: empty space customization only available in R'n'D game engine
+ if (element == EL_EMPTY_SPACE && level.game_engine_type != GAME_ENGINE_TYPE_RND)
+ return FALSE;
+
if (IS_GEM(element) ||
IS_CUSTOM_ELEMENT(element) ||
IS_GROUP_ELEMENT(element) ||
if (IS_BD_PLAYER_ELEMENT(properties_element))
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS);
- if (IS_GEM(properties_element))
+ // special case: slippery walls option for gems only available in R'n'D game engine
+ if (IS_GEM(properties_element) && level.game_engine_type == GAME_ENGINE_TYPE_RND)
+ {
+ checkbutton_info[ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS].y =
+ ED_ELEMENT_SETTINGS_XPOS(properties_element == EL_BD_DIAMOND ? 2 : 1);
+
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
+ }
if (properties_element == EL_EM_DYNAMITE)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE);
ReinitializeElementList();
ModifyEditorElementList();
}
+ else if (type_id == ED_SELECTBOX_ID_BD_SCHEDULING_TYPE)
+ {
+ // update BD cycle delay counter gadgets depending on BD scheduling type
+ DrawLevelConfigWindow();
+ }
// do not mark level as modified for certain non-level-changing gadgets
if (type_id == ED_SELECTBOX_ID_LEVELSET_SAVE_MODE ||