GADGET_ID_BD_LINE_SHIFTING_BORDERS,
GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW,
GADGET_ID_BD_SHORT_EXPLOSIONS,
+ GADGET_ID_BD_GRAVITY_AFFECTS_ALL,
GADGET_ID_STICK_ELEMENT,
GADGET_ID_EM_SLIPPERY_GEMS,
GADGET_ID_EM_EXPLODES_BY_FIRE,
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_BD_GRAVITY_AFFECTS_ALL,
ED_CHECKBUTTON_ID_STICK_ELEMENT,
ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS,
ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE,
#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_ENGINE_LAST ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL
#define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC
#define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE
NULL, NULL,
"short explosions", "use four game cycles for explosions"
},
+ {
+ ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(9),
+ GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_NONE,
+ &level.bd_gravity_affects_all,
+ NULL, NULL,
+ "gravity change affects everything", "gravity affects all falling objects"
+ },
// ---------- element settings: configure (various elements) ----------------
&li.bd_short_explosions, TRUE
},
+ {
+ -1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(24),
+ &li.bd_gravity_affects_all, TRUE
+ },
+
{
-1, -1,
-1, -1,
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;
+ cave->gravity_affects_all = level->bd_gravity_affects_all;
strncpy(cave->name, level->name, sizeof(GdString));
cave->name[sizeof(GdString) - 1] = '\0';
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;
+ level->bd_gravity_affects_all = cave->gravity_affects_all;
char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1);
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_gravity_affects_all; // BD engine gravity affects all falling objects
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