X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=e6e2281694d66a945891aa0c3abcb3a55d2cf850;hb=837b688a12df9aac7cd878ba1d0f043b774b41b1;hp=e0225dc2deded68ce3c9297a7ff41dbc61314deb;hpb=ed8c1829a0a5eac5e46efe0e8202b570f75fd0c6;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index e0225dc2..e6e22816 100644 --- a/src/files.c +++ b/src/files.c @@ -279,6 +279,48 @@ static struct LevelFileConfigInfo chunk_config_INFO[] = &li.bd_intermission, FALSE }, + { + -1, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(15), + &li.bd_scheduling_type, GD_SCHEDULING_MILLISECONDS + }, + + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(16), + &li.bd_pal_timing, FALSE + }, + + { + -1, -1, + TYPE_INTEGER, CONF_VALUE_16_BIT(6), + &li.bd_cycle_delay_ms, 200 + }, + + { + -1, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(17), + &li.bd_cycle_delay_c64, 0 + }, + + { + -1, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(18), + &li.bd_hatching_delay_cycles, 21 + }, + + { + -1, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(19), + &li.bd_hatching_delay_seconds, 2 + }, + + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(20), + &li.bd_line_shifting_borders, FALSE + }, + { -1, -1, -1, -1, @@ -3715,17 +3757,25 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->level_time[i] = level->time; cave->level_diamonds[i] = level->gems_needed; cave->level_magic_wall_time[i] = level->time_magic_wall; + + cave->level_speed[i] = level->bd_cycle_delay_ms; + cave->level_ckdelay[i] = level->bd_cycle_delay_c64; + cave->level_hatching_delay_frame[i] = level->bd_hatching_delay_cycles; + cave->level_hatching_delay_time[i] = level->bd_hatching_delay_seconds; + cave->level_timevalue[i] = level->score[SC_TIME_BONUS]; } cave->diamond_value = level->score[SC_EMERALD]; cave->extra_diamond_value = level->score[SC_DIAMOND_EXTRA]; - cave->level_speed[0] = 160; // set cave speed - + cave->scheduling = level->bd_scheduling_type; + cave->pal_timing = level->bd_pal_timing; cave->intermission = level->bd_intermission; cave->diagonal_movements = level->bd_diagonal_movements; + cave->lineshift = level->bd_line_shifting_borders; + strncpy(cave->name, level->name, sizeof(GdString)); cave->name[sizeof(GdString) - 1] = '\0'; @@ -3748,19 +3798,32 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->gems_needed = cave->level_diamonds[bd_level_nr]; level->time_magic_wall = cave->level_magic_wall_time[bd_level_nr]; + level->bd_cycle_delay_ms = cave->level_speed[bd_level_nr]; + level->bd_cycle_delay_c64 = cave->level_ckdelay[bd_level_nr]; + level->bd_hatching_delay_cycles = cave->level_hatching_delay_frame[bd_level_nr]; + level->bd_hatching_delay_seconds = cave->level_hatching_delay_time[bd_level_nr]; + level->score[SC_TIME_BONUS] = cave->level_timevalue[bd_level_nr]; level->score[SC_EMERALD] = cave->diamond_value; level->score[SC_DIAMOND_EXTRA] = cave->extra_diamond_value; + level->bd_scheduling_type = cave->scheduling; + level->bd_pal_timing = cave->pal_timing; level->bd_intermission = cave->intermission; level->bd_diagonal_movements = cave->diagonal_movements; - strncpy(level->name, cave->name, MAX_LEVEL_NAME_LEN); + level->bd_line_shifting_borders = cave->lineshift; + + char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1); + + strncpy(level->name, cave_name, MAX_LEVEL_NAME_LEN); level->name[MAX_LEVEL_NAME_LEN] = '\0'; for (x = 0; x < level->fieldx; x++) for (y = 0; y < level->fieldy; y++) level->field[x][y] = map_element_BD_to_RND(cave->map[y][x]); + + checked_free(cave_name); } static void setTapeInfoToDefaults(void);