X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=8044d338699f6320db107d04e9f62daf8306a625;hb=077af9b750d4a670455ae44438d1b1db059eb532;hp=b48fcf4a1482b38942301fbadb8396be182513f0;hpb=f187fddd964c6da2ab42b3da9f43961842f62572;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index b48fcf4a..8044d338 100644 --- a/src/files.c +++ b/src/files.c @@ -273,6 +273,48 @@ static struct LevelFileConfigInfo chunk_config_INFO[] = &li.rate_time_over_score, FALSE }, + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(14), + &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, -1, -1, @@ -570,6 +612,12 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = &li.bd_diagonal_movements, FALSE }, + { + EL_BD_DIAMOND, -1, + TYPE_INTEGER, CONF_VALUE_16_BIT(1), + &li.score[SC_DIAMOND_EXTRA], 20 + }, + // (the following values are related to various game elements) { @@ -952,14 +1000,6 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = &li.score[SC_ELEM_BONUS], 10 }, - // ---------- unused values ------------------------------------------------- - - { - EL_UNKNOWN, SAVE_CONF_NEVER, - TYPE_INTEGER, CONF_VALUE_16_BIT(1), - &li.score[SC_UNKNOWN_15], 10 - }, - { -1, -1, -1, -1, @@ -3711,14 +3751,21 @@ 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_DIAMOND]; - cave->extra_diamond_value = level->score[SC_DIAMOND]; - - cave->level_speed[0] = 160; // set cave speed + cave->diamond_value = level->score[SC_EMERALD]; + cave->extra_diamond_value = level->score[SC_DIAMOND_EXTRA]; + 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; strncpy(cave->name, level->name, sizeof(GdString)); @@ -3739,21 +3786,34 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->fieldx = MIN(cave->w, MAX_LEV_FIELDX); level->fieldy = MIN(cave->h, MAX_LEV_FIELDY); - level->time = cave->level_time[bd_level_nr]; - level->gems_needed = cave->level_diamonds[bd_level_nr]; - level->time_magic_wall = cave->level_magic_wall_time[bd_level_nr]; + level->time = cave->level_time[bd_level_nr]; + 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_DIAMOND] = cave->diamond_value; + 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_diagonal_movements = cave->diagonal_movements; + 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); + 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);