/* functions for loading SB level */
/* ------------------------------------------------------------------------- */
-int getMappedElement_SB(int element_ascii, boolean use_special_1)
+int getMappedElement_SB(int element_ascii, boolean use_ces)
{
static struct
{
int ascii;
- int rnd;
- int special_1;
+ int sb;
+ int ce;
}
sb_element_mapping[] =
{
for (i = 0; sb_element_mapping[i].ascii != 0; i++)
if (element_ascii == sb_element_mapping[i].ascii)
- return (use_special_1 ?
- sb_element_mapping[i].special_1 :
- sb_element_mapping[i].rnd);
+ return (use_ces ? sb_element_mapping[i].ce : sb_element_mapping[i].sb);
return EL_UNDEFINED;
}
boolean reading_playfield = FALSE;
boolean got_valid_playfield_line = FALSE;
boolean invalid_playfield_char = FALSE;
- boolean convert_mode_special_1 = (global.convert_leveldir &&
- global.convert_mode_special_1);
+ boolean load_xsb_to_ces = options.cmd_switches & CMD_SWITCH_LOAD_XSB_TO_CES;
int file_level_nr = 0;
int line_nr = 0;
int x, y;
for (x = 0; x < MAX_LEV_FIELDX; x++)
for (y = 0; y < MAX_LEV_FIELDY; y++)
- level->field[x][y] = EL_EMPTY;
+ level->field[x][y] = getMappedElement_SB(' ', load_xsb_to_ces);
level->fieldx = 0;
level->fieldy = 0;
/* read playfield elements from line */
for (line_ptr = line; *line_ptr; line_ptr++)
{
- int mapped_sb_element = getMappedElement_SB(*line_ptr,
- convert_mode_special_1);
+ int mapped_sb_element = getMappedElement_SB(*line_ptr, load_xsb_to_ces);
/* stop parsing playfield line if larger column than allowed */
if (x >= MAX_LEV_FIELDX)
sprintf(level->name, "--> Level %d <--", level_file_info->nr);
}
+ /* set all empty fields beyond the border walls to invisible steel wall */
for (y = 0; y < level->fieldy; y++) for (x = 0; x < level->fieldx; x++)
{
if ((x == 0 || x == level->fieldx - 1 ||
y == 0 || y == level->fieldy - 1) &&
- level->field[x][y] == getMappedElement_SB(' ', convert_mode_special_1))
- FloodFillLevel(x, y, getMappedElement_SB('_', convert_mode_special_1),
+ level->field[x][y] == getMappedElement_SB(' ', load_xsb_to_ces))
+ FloodFillLevel(x, y, getMappedElement_SB('_', load_xsb_to_ces),
level->field, level->fieldx, level->fieldy);
}
+
+ if (load_xsb_to_ces)
+ {
+ level->time = 0;
+ level->use_step_counter = TRUE;
+
+ level->initial_player_stepsize[0] = STEPSIZE_SLOW;
+
+ level->use_custom_template = TRUE;
+ }
}
#define SETUP_TOKEN_INPUT_ON_FOCUS 22
#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 23
#define SETUP_TOKEN_GAME_FRAME_DELAY 24
-#define SETUP_TOKEN_GRAPHICS_SET 25
-#define SETUP_TOKEN_SOUNDS_SET 26
-#define SETUP_TOKEN_MUSIC_SET 27
-#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 28
-#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 29
-#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 30
+#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS 25
+#define SETUP_TOKEN_GRAPHICS_SET 26
+#define SETUP_TOKEN_SOUNDS_SET 27
+#define SETUP_TOKEN_MUSIC_SET 28
+#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 29
+#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 30
+#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 31
-#define NUM_GLOBAL_SETUP_TOKENS 31
+#define NUM_GLOBAL_SETUP_TOKENS 32
/* editor setup */
#define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0
static struct TokenInfo global_setup_tokens[] =
{
- { TYPE_STRING, &si.player_name, "player_name" },
- { TYPE_SWITCH, &si.sound, "sound" },
- { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
- { TYPE_SWITCH, &si.sound_music, "background_music" },
- { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
- { TYPE_SWITCH, &si.toons, "toons" },
- { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
- { TYPE_INTEGER,&si.scroll_delay_value,"scroll_delay_value" },
- { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
- { TYPE_SWITCH, &si.fade_screens, "fade_screens" },
- { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
- { TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" },
- { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
- { TYPE_SWITCH, &si.team_mode, "team_mode" },
- { TYPE_SWITCH, &si.handicap, "handicap" },
- { TYPE_SWITCH, &si.skip_levels, "skip_levels" },
- { TYPE_SWITCH, &si.time_limit, "time_limit" },
- { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
- { TYPE_STRING, &si.fullscreen_mode, "fullscreen_mode" },
- { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
- { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
- { TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
- { TYPE_SWITCH, &si.input_on_focus, "input_on_focus" },
- { TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" },
- { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
- { TYPE_STRING, &si.graphics_set, "graphics_set" },
- { TYPE_STRING, &si.sounds_set, "sounds_set" },
- { TYPE_STRING, &si.music_set, "music_set" },
+ { TYPE_STRING, &si.player_name, "player_name" },
+ { TYPE_SWITCH, &si.sound, "sound" },
+ { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
+ { TYPE_SWITCH, &si.sound_music, "background_music" },
+ { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
+ { TYPE_SWITCH, &si.toons, "toons" },
+ { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
+ { TYPE_INTEGER,&si.scroll_delay_value, "scroll_delay_value" },
+ { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
+ { TYPE_SWITCH, &si.fade_screens, "fade_screens" },
+ { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording"},
+ { TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" },
+ { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
+ { TYPE_SWITCH, &si.team_mode, "team_mode" },
+ { TYPE_SWITCH, &si.handicap, "handicap" },
+ { TYPE_SWITCH, &si.skip_levels, "skip_levels" },
+ { TYPE_SWITCH, &si.time_limit, "time_limit" },
+ { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
+ { TYPE_STRING, &si.fullscreen_mode, "fullscreen_mode" },
+ { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
+ { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
+ { TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
+ { TYPE_SWITCH, &si.input_on_focus, "input_on_focus" },
+ { TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" },
+ { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
+ { TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" },
+ { TYPE_STRING, &si.graphics_set, "graphics_set" },
+ { TYPE_STRING, &si.sounds_set, "sounds_set" },
+ { TYPE_STRING, &si.music_set, "music_set" },
{ TYPE_SWITCH3,&si.override_level_graphics, "override_level_graphics" },
{ TYPE_SWITCH3,&si.override_level_sounds, "override_level_sounds" },
{ TYPE_SWITCH3,&si.override_level_music, "override_level_music" },
si->input_on_focus = FALSE;
si->prefer_aga_graphics = TRUE;
si->game_frame_delay = GAME_FRAME_DELAY;
+ si->sp_show_border_elements = FALSE;
si->graphics_set = getStringCopy(GFX_DEFAULT_SUBDIR);
si->sounds_set = getStringCopy(SND_DEFAULT_SUBDIR);