X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=a0c0564cb99a1e2215169e8ec59b2a23186a8c00;hb=8016176ff827829c33231df9a8902e543b7131f3;hp=b405986f92cbb27ad077924c8d6d57b38aed4028;hpb=f77a818405126aac5510ed0dc09b2cb6bc3deaca;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index b405986f..a0c0564c 100644 --- a/src/files.c +++ b/src/files.c @@ -307,12 +307,7 @@ static struct LevelFileConfigInfo chunk_config_INFO[] = }, { -1, -1, - TYPE_BOOLEAN, CONF_VALUE_8_BIT(23), - &li.bd_gravity_affects_all, TRUE - }, - { - -1, -1, - TYPE_INTEGER, CONF_VALUE_8_BIT(24), + TYPE_INTEGER, CONF_VALUE_8_BIT(23), &li.bd_cave_random_seed_c64, 0 }, @@ -639,11 +634,98 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = &li.bd_snap_element, EL_EMPTY }, + { + EL_BD_SAND, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_sand_looks_like, EL_BD_SAND + }, + + { + EL_BD_ROCK, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_rock_turns_to_on_falling, EL_BD_ROCK_FALLING + }, + { + EL_BD_ROCK, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(2), + &li.bd_rock_turns_to_on_impact, EL_BD_ROCK + }, + { EL_BD_DIAMOND, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.score[SC_DIAMOND_EXTRA], 20 }, + { + EL_BD_DIAMOND, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(2), + &li.bd_diamond_turns_to_on_falling, EL_BD_DIAMOND_FALLING + }, + { + EL_BD_DIAMOND, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(3), + &li.bd_diamond_turns_to_on_impact, EL_BD_DIAMOND + }, + + { + EL_BD_FIREFLY, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_firefly_explodes_to, EL_BD_EXPLODING_1 + }, + + { + EL_BD_FIREFLY_2, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_firefly_2_explodes_to, EL_BD_EXPLODING_1 + }, + + { + EL_BD_BUTTERFLY, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_butterfly_explodes_to, EL_BD_DIAMOND_GROWING_1 + }, + + { + EL_BD_BUTTERFLY_2, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_butterfly_2_explodes_to, EL_BD_DIAMOND_GROWING_1 + }, + + { + EL_BD_STONEFLY, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_stonefly_explodes_to, EL_BD_ROCK_GROWING_1 + }, + + { + EL_BD_DRAGONFLY, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_dragonfly_explodes_to, EL_BD_EXPLODING_1 + }, + + { + EL_BD_DIAMOND_GROWING_5, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_diamond_birth_turns_to, EL_BD_DIAMOND + }, + + { + EL_BD_BOMB_EXPLODING_4, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_bomb_explosion_turns_to, EL_BD_WALL + }, + + { + EL_BD_NITRO_PACK_EXPLODING_4, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_nitro_explosion_turns_to, EL_EMPTY + }, + + { + EL_BD_EXPLODING_5, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_explosion_turns_to, EL_EMPTY + }, { EL_BD_MAGIC_WALL, -1, @@ -910,11 +992,10 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = TYPE_INTEGER, CONF_VALUE_8_BIT(3), &li.bd_gravity_switch_delay, 10 }, - { - EL_BD_SAND, -1, - TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_sand_looks_like, EL_BD_SAND + EL_BD_GRAVITY_SWITCH, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), + &li.bd_gravity_affects_all, TRUE }, // (the following values are related to various game elements) @@ -4160,7 +4241,6 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->lineshift = level->bd_line_shifting_borders; cave->border_scan_first_and_last = level->bd_scan_first_and_last_row; cave->short_explosions = level->bd_short_explosions; - cave->gravity_affects_all = level->bd_gravity_affects_all; // player properties cave->diagonal_movements = level->bd_diagonal_movements; @@ -4259,6 +4339,24 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->gravity = level->bd_gravity_direction; cave->gravity_switch_active = level->bd_gravity_switch_active; cave->gravity_change_time = level->bd_gravity_switch_delay; + cave->gravity_affects_all = level->bd_gravity_affects_all; + + cave->stone_falling_effect = LEVEL_TO_CAVE(level->bd_rock_turns_to_on_falling); + cave->stone_bouncing_effect = LEVEL_TO_CAVE(level->bd_rock_turns_to_on_impact); + cave->diamond_falling_effect = LEVEL_TO_CAVE(level->bd_diamond_turns_to_on_falling); + cave->diamond_bouncing_effect = LEVEL_TO_CAVE(level->bd_diamond_turns_to_on_impact); + + cave->firefly_explode_to = LEVEL_TO_CAVE(level->bd_firefly_explodes_to); + cave->alt_firefly_explode_to = LEVEL_TO_CAVE(level->bd_firefly_2_explodes_to); + cave->butterfly_explode_to = LEVEL_TO_CAVE(level->bd_butterfly_explodes_to); + cave->alt_butterfly_explode_to = LEVEL_TO_CAVE(level->bd_butterfly_2_explodes_to); + cave->stonefly_explode_to = LEVEL_TO_CAVE(level->bd_stonefly_explodes_to); + cave->dragonfly_explode_to = LEVEL_TO_CAVE(level->bd_dragonfly_explodes_to); + + cave->diamond_birth_effect = LEVEL_TO_CAVE(level->bd_diamond_birth_turns_to); + cave->bomb_explosion_effect = LEVEL_TO_CAVE(level->bd_bomb_explosion_turns_to); + cave->nitro_explosion_effect = LEVEL_TO_CAVE(level->bd_nitro_explosion_turns_to); + cave->explosion_effect = LEVEL_TO_CAVE(level->bd_explosion_turns_to); // level name strncpy(cave->name, level->name, sizeof(GdString)); @@ -4304,7 +4402,6 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_line_shifting_borders = cave->lineshift; level->bd_scan_first_and_last_row = cave->border_scan_first_and_last; level->bd_short_explosions = cave->short_explosions; - level->bd_gravity_affects_all = cave->gravity_affects_all; // player properties level->bd_diagonal_movements = cave->diagonal_movements; @@ -4403,6 +4500,24 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_gravity_direction = cave->gravity; level->bd_gravity_switch_active = cave->gravity_switch_active; level->bd_gravity_switch_delay = cave->gravity_change_time; + level->bd_gravity_affects_all = cave->gravity_affects_all; + + level->bd_rock_turns_to_on_falling = CAVE_TO_LEVEL(cave->stone_falling_effect); + level->bd_rock_turns_to_on_impact = CAVE_TO_LEVEL(cave->stone_bouncing_effect); + level->bd_diamond_turns_to_on_falling = CAVE_TO_LEVEL(cave->diamond_falling_effect); + level->bd_diamond_turns_to_on_impact = CAVE_TO_LEVEL(cave->diamond_bouncing_effect); + + level->bd_firefly_explodes_to = CAVE_TO_LEVEL(cave->firefly_explode_to); + level->bd_firefly_2_explodes_to = CAVE_TO_LEVEL(cave->alt_firefly_explode_to); + level->bd_butterfly_explodes_to = CAVE_TO_LEVEL(cave->butterfly_explode_to); + level->bd_butterfly_2_explodes_to = CAVE_TO_LEVEL(cave->alt_butterfly_explode_to); + level->bd_stonefly_explodes_to = CAVE_TO_LEVEL(cave->stonefly_explode_to); + level->bd_dragonfly_explodes_to = CAVE_TO_LEVEL(cave->dragonfly_explode_to); + + level->bd_diamond_birth_turns_to = CAVE_TO_LEVEL(cave->diamond_birth_effect); + level->bd_bomb_explosion_turns_to = CAVE_TO_LEVEL(cave->bomb_explosion_effect); + level->bd_nitro_explosion_turns_to = CAVE_TO_LEVEL(cave->nitro_explosion_effect); + level->bd_explosion_turns_to = CAVE_TO_LEVEL(cave->explosion_effect); // level name char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1);