From: Holger Schemel Date: Sun, 10 Mar 2024 16:40:10 +0000 (+0100) Subject: added support for line-shifting wrap-around in BD engine to level editor X-Git-Tag: 4.4.0.0-test-1~213 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=79dff95b844bfab7bf35b0e4359e352df9b62034;p=rocksndiamonds.git added support for line-shifting wrap-around in BD engine to level editor --- diff --git a/src/editor.c b/src/editor.c index 6d8bd174..f0c1cc23 100644 --- a/src/editor.c +++ b/src/editor.c @@ -664,6 +664,7 @@ enum GADGET_ID_RANDOM_RESTRICTED, GADGET_ID_BD_INTERMISSION, GADGET_ID_BD_PAL_TIMING, + GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_STICK_ELEMENT, GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_EM_EXPLODES_BY_FIRE, @@ -991,6 +992,7 @@ 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_STICK_ELEMENT, ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS, ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE, @@ -1072,7 +1074,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_LINE_SHIFTING_BORDERS #define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC #define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE @@ -3343,6 +3345,14 @@ 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(5), + GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_NONE, + &level.bd_line_shifting_borders, + NULL, NULL, + "line-shifting borders", "use line-shifting wrap-around" + }, // ---------- element settings: configure (various elements) ---------------- diff --git a/src/files.c b/src/files.c index 8044d338..e6e22816 100644 --- a/src/files.c +++ b/src/files.c @@ -315,6 +315,12 @@ static struct LevelFileConfigInfo chunk_config_INFO[] = &li.bd_hatching_delay_seconds, 2 }, + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(20), + &li.bd_line_shifting_borders, FALSE + }, + { -1, -1, -1, -1, @@ -3768,6 +3774,8 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->intermission = level->bd_intermission; cave->diagonal_movements = level->bd_diagonal_movements; + cave->lineshift = level->bd_line_shifting_borders; + strncpy(cave->name, level->name, sizeof(GdString)); cave->name[sizeof(GdString) - 1] = '\0'; @@ -3804,6 +3812,8 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_intermission = cave->intermission; level->bd_diagonal_movements = cave->diagonal_movements; + level->bd_line_shifting_borders = cave->lineshift; + char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1); strncpy(level->name, cave_name, MAX_LEVEL_NAME_LEN); diff --git a/src/main.h b/src/main.h index 90bd7ae0..fcdcaf26 100644 --- a/src/main.h +++ b/src/main.h @@ -3486,6 +3486,7 @@ struct LevelInfo int bd_hatching_delay_seconds; // BD hatching delay (in seconds) int bd_scheduling_type; // BD engine scheduling type boolean bd_pal_timing; // BD engine uses special PAL timing + boolean bd_line_shifting_borders; // BD engine uses line-shifting wrap-around boolean bd_intermission; // BD level is intermission boolean bd_diagonal_movements; // BD style diagonal movements boolean em_slippery_gems; // EM style "gems slip from wall" behaviour