X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=75e691c36555fdd434af328a817ac5be0c482c99;hp=4ca23663e68e4bfbd4101ec9aa522a6e57a94b37;hb=17c7213a32d3a0e4c84727937f2ed79028461798;hpb=30eb586d06bc4d1ee7388dced1c20e530292aa93 diff --git a/src/files.c b/src/files.c index 4ca23663..75e691c3 100644 --- a/src/files.c +++ b/src/files.c @@ -668,6 +668,11 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = TYPE_INTEGER, CONF_VALUE_8_BIT(4), &li.game_of_life[3], 3 }, + { + EL_GAME_OF_LIFE, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(5), + &li.use_life_bugs, FALSE + }, { EL_BIOMAZE, -1, @@ -6309,6 +6314,10 @@ static void LoadLevel_InitVersion(struct LevelInfo *level) level->extra_time_score = level->score[SC_TIME_BONUS]; } + /* game logic of "game of life" and "biomaze" was buggy before 4.1.1.1 */ + if (level->game_version < VERSION_IDENT(4,1,1,1)) + level->use_life_bugs = TRUE; + if (level->game_version < VERSION_IDENT(3,2,0,7)) { /* default behaviour for snapping was "not continuous" before 3.2.0-7 */ @@ -8353,11 +8362,14 @@ enum SETUP_TOKEN_WINDOW_SCALING_PERCENT, SETUP_TOKEN_WINDOW_SCALING_QUALITY, SETUP_TOKEN_SCREEN_RENDERING_MODE, + SETUP_TOKEN_VSYNC_MODE, SETUP_TOKEN_ASK_ON_ESCAPE, SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR, + SETUP_TOKEN_ASK_ON_GAME_OVER, SETUP_TOKEN_QUICK_SWITCH, SETUP_TOKEN_INPUT_ON_FOCUS, SETUP_TOKEN_PREFER_AGA_GRAPHICS, + SETUP_TOKEN_GAME_SPEED_EXTENDED, SETUP_TOKEN_GAME_FRAME_DELAY, SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS, SETUP_TOKEN_SMALL_GAME_GRAPHICS, @@ -8373,6 +8385,7 @@ enum SETUP_TOKEN_VOLUME_MUSIC, SETUP_TOKEN_NETWORK_MODE, SETUP_TOKEN_NETWORK_PLAYER_NR, + SETUP_TOKEN_NETWORK_SERVER_HOSTNAME, SETUP_TOKEN_TOUCH_CONTROL_TYPE, SETUP_TOKEN_TOUCH_MOVE_DISTANCE, SETUP_TOKEN_TOUCH_DROP_DISTANCE, @@ -8594,11 +8607,14 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_INTEGER,&si.window_scaling_percent, "window_scaling_percent" }, { TYPE_STRING, &si.window_scaling_quality, "window_scaling_quality" }, { TYPE_STRING, &si.screen_rendering_mode, "screen_rendering_mode" }, + { TYPE_STRING, &si.vsync_mode, "vsync_mode" }, { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" }, { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" }, + { TYPE_SWITCH, &si.ask_on_game_over, "ask_on_game_over" }, { 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_SWITCH, &si.game_speed_extended, "game_speed_extended" }, { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" }, { TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" }, { TYPE_SWITCH, &si.small_game_graphics, "small_game_graphics" }, @@ -8614,6 +8630,7 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_INTEGER,&si.volume_music, "volume_music" }, { TYPE_SWITCH, &si.network_mode, "network_mode" }, { TYPE_PLAYER, &si.network_player_nr, "network_player" }, + { TYPE_STRING, &si.network_server_hostname, "network_server_hostname" }, { TYPE_STRING, &si.touch.control_type, "touch.control_type" }, { TYPE_INTEGER,&si.touch.move_distance, "touch.move_distance" }, { TYPE_INTEGER,&si.touch.drop_distance, "touch.drop_distance" }, @@ -8814,11 +8831,14 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->window_scaling_percent = STD_WINDOW_SCALING_PERCENT; si->window_scaling_quality = getStringCopy(SCALING_QUALITY_DEFAULT); si->screen_rendering_mode = getStringCopy(STR_SPECIAL_RENDERING_DEFAULT); + si->vsync_mode = getStringCopy(STR_VSYNC_MODE_DEFAULT); si->ask_on_escape = TRUE; si->ask_on_escape_editor = TRUE; + si->ask_on_game_over = TRUE; si->quick_switch = FALSE; si->input_on_focus = FALSE; si->prefer_aga_graphics = TRUE; + si->game_speed_extended = FALSE; si->game_frame_delay = GAME_FRAME_DELAY; si->sp_show_border_elements = FALSE; si->small_game_graphics = FALSE; @@ -8838,6 +8858,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->network_mode = FALSE; si->network_player_nr = 0; /* first player */ + si->network_server_hostname = getStringCopy(STR_NETWORK_AUTO_DETECT); si->touch.control_type = getStringCopy(TOUCH_CONTROL_DEFAULT); si->touch.move_distance = TOUCH_MOVE_DISTANCE_DEFAULT; /* percent */