GADGET_ID_RANDOM_QUANTITY,
GADGET_ID_RANDOM_RESTRICTED,
GADGET_ID_BD_INTERMISSION,
+ GADGET_ID_BD_INTERMISSION_CLIPPED,
GADGET_ID_BD_PAL_TIMING,
GADGET_ID_BD_LINE_SHIFTING_BORDERS,
GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW,
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_3,
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2,
ED_CHECKBUTTON_ID_BD_INTERMISSION,
+ ED_CHECKBUTTON_ID_BD_INTERMISSION_CLIPPED,
ED_CHECKBUTTON_ID_BD_PAL_TIMING,
ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
"Boulder Dash game engine settings:", NULL,
"Intermission", "Level is an intermission level"
},
+ {
+ ED_CHECKBUTTON_ID_BD_INTERMISSION_CLIPPED,
+ -1, ED_ENGINE_SETTINGS_YPOS(0),
+ GADGET_ID_BD_INTERMISSION_CLIPPED, GADGET_ID_BD_INTERMISSION,
+ &level.bd_intermission_clipped,
+ NULL, " ",
+ "Clipped", "Clip to standard intermission size"
+ },
{
ED_CHECKBUTTON_ID_BD_PAL_TIMING,
ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(2),
TYPE_INTEGER, CONF_VALUE_8_BIT(23),
&li.bd_cave_random_seed_c64, 0
},
+ {
+ -1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(24),
+ &li.bd_intermission_clipped, FALSE
+ },
{
-1, -1,
TYPE_INTEGER, CONF_VALUE_32_BIT(3),
// level type
cave->intermission = level->bd_intermission;
+ // level clipping
+ if (level->bd_intermission && level->bd_intermission_clipped)
+ {
+ cave->x1 = 0;
+ cave->y1 = 0;
+ cave->x2 = MIN(19, cave->w - 1);
+ cave->y2 = MIN(11, cave->h - 1);
+ }
+
// level settings
cave->level_time[0] = level->time;
cave->level_diamonds[0] = level->gems_needed;
// level type
level->bd_intermission = cave->intermission;
+ // level clipping
+ if (cave->intermission &&
+ cave->w == 40 &&
+ cave->h == 22 &&
+ cave->x1 == 0 &&
+ cave->y1 == 0 &&
+ cave->x2 == 19 &&
+ cave->y2 == 11)
+ level->bd_intermission_clipped = TRUE;
+
// level settings
level->time = cave->level_time[bd_level_nr];
level->gems_needed = cave->level_diamonds[bd_level_nr];
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_intermission_clipped; // BD intermission should be clipped to standard size
boolean bd_diagonal_movements; // BD style diagonal movements
boolean bd_topmost_player_active; // BD engine uses first player found on playfield
int bd_snap_element; // BD element that is created when player is snapping