X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=6d8bd174f876727a3ec06aff7a28b62f9aca3916;hb=2ab201bba336de7c14a297519a17d8979ca08783;hp=1cdf04d22af28da74faf22a3c72eb023091bdcbc;hpb=89c6f370f355a7822c99faa5ae078b580904d7a9;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 1cdf04d2..6d8bd174 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, @@ -571,6 +583,7 @@ enum 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, @@ -751,6 +764,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, @@ -865,6 +882,7 @@ enum 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, @@ -904,6 +922,9 @@ enum #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 @@ -1484,6 +1505,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) ---------------- @@ -2530,6 +2587,19 @@ static struct ValueTextInfo options_group_choice_mode[] = { -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, @@ -2613,6 +2683,15 @@ static struct &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), @@ -3258,7 +3337,7 @@ static struct }, { ED_CHECKBUTTON_ID_BD_PAL_TIMING, - ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(1), + ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2), GADGET_ID_BD_PAL_TIMING, GADGET_ID_NONE, &level.bd_pal_timing, NULL, NULL, @@ -10017,9 +10096,25 @@ 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) @@ -14530,6 +14625,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 ||