X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=587e71b956c02b45bd64682399db1464b1c2477f;hb=d81acb06e8ab04031e754eebe4a90def243336f3;hp=a0115f711ed1e2a839be6f9bafc9216e096f5ca7;hpb=d0747d3b2d7c61844bc1ad096a4e18d889640018;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index a0115f71..587e71b9 100644 --- a/src/files.c +++ b/src/files.c @@ -2334,6 +2334,11 @@ void setElementChangeInfoToDefaults(struct ElementChangeInfo *change) static void setLevelInfoToDefaults_Level(struct LevelInfo *level) { + boolean add_border = FALSE; + int x1 = 0; + int y1 = 0; + int x2 = STD_LEV_FIELDX - 1; + int y2 = STD_LEV_FIELDY - 1; int i, x, y; li = *level; // copy level data into temporary buffer @@ -2369,21 +2374,44 @@ static void setLevelInfoToDefaults_Level(struct LevelInfo *level) strcpy(level->name, NAMELESS_LEVEL_NAME); strcpy(level->author, ANONYMOUS_NAME); + // set default game engine type + level->game_engine_type = setup.default_game_engine_type; + + // some game engines should have a default playfield with border elements + if (level->game_engine_type == GAME_ENGINE_TYPE_BD || + level->game_engine_type == GAME_ENGINE_TYPE_EM || + level->game_engine_type == GAME_ENGINE_TYPE_SP) + { + add_border = TRUE; + x1++; + y1++; + x2--; + y2--; + } + // set level playfield to playable default level with player and exit for (x = 0; x < MAX_LEV_FIELDX; x++) + { for (y = 0; y < MAX_LEV_FIELDY; y++) - level->field[x][y] = EL_SAND; + { + if (add_border && (x == 0 || x == STD_LEV_FIELDX - 1 || + y == 0 || y == STD_LEV_FIELDY - 1)) + level->field[x][y] = getEngineElement(EL_STEELWALL); + else + level->field[x][y] = getEngineElement(EL_SAND); + } + } - level->field[0][0] = EL_PLAYER_1; - level->field[STD_LEV_FIELDX - 1][STD_LEV_FIELDY - 1] = EL_EXIT_CLOSED; + level->field[x1][y1] = getEngineElement(EL_PLAYER_1); + level->field[x2][y2] = getEngineElement(EL_EXIT_CLOSED); - BorderElement = EL_STEELWALL; + BorderElement = getEngineElement(EL_STEELWALL); // detect custom elements when loading them level->file_has_custom_elements = FALSE; // set random colors for BD style levels according to preferred color type - SetRandomLevelColors_BD(setup.bd_color_type); + SetRandomLevelColors_BD(setup.bd_default_color_type); // set default color type and colors for BD style level colors SetDefaultLevelColorType_BD(); @@ -10727,6 +10755,10 @@ static struct TokenInfo global_setup_tokens[] = TYPE_INTEGER, &setup.game_frame_delay, "game_frame_delay" }, + { + TYPE_INTEGER, + &setup.default_game_engine_type, "default_game_engine_type" + }, { TYPE_SWITCH, &setup.bd_skip_uncovering, "bd_skip_uncovering" @@ -10739,10 +10771,26 @@ static struct TokenInfo global_setup_tokens[] = TYPE_SWITCH, &setup.bd_scroll_delay, "bd_scroll_delay" }, + { + TYPE_SWITCH, + &setup.bd_show_invisible_outbox, "bd_show_invisible_outbox" + }, { TYPE_SWITCH3, &setup.bd_smooth_movements, "bd_smooth_movements" }, + { + TYPE_SWITCH3, + &setup.bd_pushing_graphics, "bd_pushing_graphics" + }, + { + TYPE_SWITCH3, + &setup.bd_up_down_graphics, "bd_up_down_graphics" + }, + { + TYPE_SWITCH3, + &setup.bd_skip_falling_sounds, "bd_skip_falling_sounds" + }, { TYPE_INTEGER, &setup.bd_palette_c64, "bd_palette_c64" @@ -10757,7 +10805,11 @@ static struct TokenInfo global_setup_tokens[] = }, { TYPE_INTEGER, - &setup.bd_color_type, "bd_color_type" + &setup.bd_default_color_type, "bd_default_color_type" + }, + { + TYPE_SWITCH, + &setup.bd_random_colors, "bd_random_colors" }, { TYPE_SWITCH, @@ -10815,6 +10867,10 @@ static struct TokenInfo global_setup_tokens[] = TYPE_INTEGER, &setup.volume_music, "volume_music" }, + { + TYPE_SWITCH, + &setup.audio_sample_rate_44100, "audio_sample_rate_44100" + }, { TYPE_SWITCH, &setup.network_mode, "network_mode" @@ -11135,6 +11191,14 @@ static struct TokenInfo shortcut_setup_tokens[] = TYPE_KEY_X11, &setup.shortcut.snap_down, "shortcut.snap_down" }, + { + TYPE_KEY_X11, + &setup.shortcut.speed_fast, "shortcut.speed_fast" + }, + { + TYPE_KEY_X11, + &setup.shortcut.speed_slow, "shortcut.speed_slow" + }, }; static struct SetupInputInfo setup_input; @@ -11376,6 +11440,10 @@ static struct TokenInfo internal_setup_tokens[] = TYPE_BOOLEAN, &setup.internal.menu_shortcuts_snap, "menu_shortcuts_snap" }, + { + TYPE_BOOLEAN, + &setup.internal.menu_shortcuts_speed, "menu_shortcuts_speed" + }, { TYPE_BOOLEAN, &setup.internal.info_title, "info_title" @@ -11579,14 +11647,20 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->prefer_extra_panel_items = TRUE; si->game_speed_extended = FALSE; si->game_frame_delay = GAME_FRAME_DELAY; + si->default_game_engine_type = GAME_ENGINE_TYPE_RND; si->bd_skip_uncovering = FALSE; si->bd_skip_hatching = FALSE; si->bd_scroll_delay = TRUE; + si->bd_show_invisible_outbox = FALSE; si->bd_smooth_movements = AUTO; + si->bd_pushing_graphics = TRUE; + si->bd_up_down_graphics = TRUE; + si->bd_skip_falling_sounds = AUTO; si->bd_palette_c64 = GD_DEFAULT_PALETTE_C64; si->bd_palette_c64dtv = GD_DEFAULT_PALETTE_C64DTV; si->bd_palette_atari = GD_DEFAULT_PALETTE_ATARI; - si->bd_color_type = GD_DEFAULT_COLOR_TYPE; + si->bd_default_color_type = GD_DEFAULT_COLOR_TYPE; + si->bd_random_colors = FALSE; si->sp_show_border_elements = FALSE; si->small_game_graphics = FALSE; si->show_load_save_buttons = FALSE; @@ -11604,6 +11678,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->volume_simple = 100; // percent si->volume_loops = 100; // percent si->volume_music = 100; // percent + si->audio_sample_rate_44100 = FALSE; si->network_mode = FALSE; si->network_player_nr = 0; // first player @@ -11726,6 +11801,9 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->shortcut.snap_up = DEFAULT_KEY_SNAP_UP; si->shortcut.snap_down = DEFAULT_KEY_SNAP_DOWN; + si->shortcut.speed_fast = DEFAULT_KEY_SPEED_FAST; + si->shortcut.speed_slow = DEFAULT_KEY_SPEED_SLOW; + for (i = 0; i < MAX_PLAYERS; i++) { si->input[i].use_joystick = FALSE;