From: Holger Schemel Date: Mon, 11 Mar 2024 08:37:03 +0000 (+0100) Subject: added support for short explosions in BD engine to level editor X-Git-Tag: 4.4.0.0-test-1~207 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=18a8fd0a1f4a2999c0cdff4423a584be49ff868a;p=rocksndiamonds.git added support for short explosions in BD engine to level editor --- diff --git a/src/editor.c b/src/editor.c index 1573c089..6ea027d6 100644 --- a/src/editor.c +++ b/src/editor.c @@ -666,6 +666,7 @@ enum 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, @@ -995,6 +996,7 @@ enum 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, @@ -1076,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_SCAN_FIRST_AND_LAST_ROW +#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 @@ -3363,6 +3365,14 @@ static struct 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) ---------------- diff --git a/src/files.c b/src/files.c index 5f1faac6..2842d1d4 100644 --- a/src/files.c +++ b/src/files.c @@ -333,6 +333,12 @@ static struct LevelFileConfigInfo chunk_config_INFO[] = &li.bd_scan_first_and_last_row, TRUE }, + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(23), + &li.bd_short_explosions, TRUE + }, + { -1, -1, -1, -1, @@ -3789,6 +3795,7 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->lineshift = level->bd_line_shifting_borders; cave->wraparound_objects = level->bd_wraparound_objects; cave->border_scan_first_and_last = level->bd_scan_first_and_last_row; + cave->short_explosions = level->bd_short_explosions; strncpy(cave->name, level->name, sizeof(GdString)); cave->name[sizeof(GdString) - 1] = '\0'; @@ -3829,6 +3836,7 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_line_shifting_borders = cave->lineshift; level->bd_wraparound_objects = cave->wraparound_objects; level->bd_scan_first_and_last_row = cave->border_scan_first_and_last; + level->bd_short_explosions = cave->short_explosions; char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1); diff --git a/src/main.h b/src/main.h index 59dfc59e..07eabfb9 100644 --- a/src/main.h +++ b/src/main.h @@ -3489,6 +3489,7 @@ struct LevelInfo boolean bd_line_shifting_borders; // BD engine uses line-shifting wrap-around boolean bd_wraparound_objects; // BD cave object rendering uses wrap-around boolean bd_scan_first_and_last_row; // BD engine scans top and bottom border rows + boolean bd_short_explosions; // BD engine uses four game cycles for explosions 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