X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=6ea027d683b2702045223266fd33e2d936e6fd7d;hb=18a8fd0a1f4a2999c0cdff4423a584be49ff868a;hp=bd1e70bbae8d4449fe690425faf16935167f314a;hpb=28f12e15d6cc932d5c2b6ae5a621fa024f3a1a2b;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index bd1e70bb..6ea027d6 100644 --- a/src/editor.c +++ b/src/editor.c @@ -429,6 +429,18 @@ enum 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, @@ -652,6 +664,9 @@ enum 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, @@ -752,6 +767,10 @@ enum 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, @@ -975,6 +994,9 @@ enum 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, @@ -1056,7 +1078,7 @@ enum #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_PAL_TIMING +#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 @@ -1489,6 +1511,42 @@ static struct &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) ---------------- @@ -2537,15 +2595,15 @@ static struct ValueTextInfo options_group_choice_mode[] = 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" }, + { 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 } + { -1, NULL } }; static struct ValueTextInfo *action_arg_modes[] = @@ -3291,6 +3349,30 @@ static struct 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) ---------------- @@ -4365,7 +4447,7 @@ static int editor_el_boulderdash_native[] = 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, @@ -4375,7 +4457,7 @@ static int editor_el_boulderdash_native[] = 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, @@ -10044,6 +10126,18 @@ 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); @@ -14561,6 +14655,11 @@ static void HandleSelectboxGadgets(struct GadgetInfo *gi) 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 ||