X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=7b2d7b2d7e728c68d090bd1c8e25d51ad752a6e6;hb=1856b32b9d7b3c80596362cf7a3dd8e032cd83fc;hp=cadbc50d62085658bb7e2ae1b502837ace96b457;hpb=33aea5bc32e267538f3993b27774c636211bca1d;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index cadbc50d..7b2d7b2d 100644 --- a/src/files.c +++ b/src/files.c @@ -640,417 +640,417 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = // (these values are only valid for BD style levels) // (some values for BD style amoeba following below) { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_diagonal_movements, FALSE }, { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_topmost_player_active, TRUE }, { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(3), &li.bd_pushing_prob, 25 }, { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(4), &li.bd_pushing_prob_with_sweet, 100 }, { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(5), &li.bd_push_mega_rock_with_sweet, FALSE }, { - EL_BD_PLAYER, -1, + EL_BDX_PLAYER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(6), &li.bd_snap_element, EL_EMPTY }, { - EL_BD_SAND_1, -1, + EL_BDX_SAND_1, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_sand_looks_like, EL_BD_SAND_1 + &li.bd_sand_looks_like, EL_BDX_SAND_1 }, { - EL_BD_ROCK_NATIVE, -1, + EL_BDX_ROCK, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_rock_turns_to_on_falling, EL_BD_ROCK_NATIVE_FALLING + &li.bd_rock_turns_to_on_falling, EL_BDX_ROCK_FALLING }, { - EL_BD_ROCK_NATIVE, -1, + EL_BDX_ROCK, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_rock_turns_to_on_impact, EL_BD_ROCK_NATIVE + &li.bd_rock_turns_to_on_impact, EL_BDX_ROCK }, { - EL_BD_DIAMOND_NATIVE, -1, + EL_BDX_DIAMOND, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.score[SC_DIAMOND_EXTRA], 20 }, { - EL_BD_DIAMOND_NATIVE, -1, + EL_BDX_DIAMOND, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_diamond_turns_to_on_falling, EL_BD_DIAMOND_NATIVE_FALLING + &li.bd_diamond_turns_to_on_falling, EL_BDX_DIAMOND_FALLING }, { - EL_BD_DIAMOND_NATIVE, -1, + EL_BDX_DIAMOND, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(3), - &li.bd_diamond_turns_to_on_impact, EL_BD_DIAMOND_NATIVE + &li.bd_diamond_turns_to_on_impact, EL_BDX_DIAMOND }, { - EL_BD_FIREFLY_1, -1, + EL_BDX_FIREFLY_1, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_firefly_1_explodes_to, EL_BD_EXPLODING_1 + &li.bd_firefly_1_explodes_to, EL_BDX_EXPLODING_1 }, { - EL_BD_FIREFLY_2, -1, + EL_BDX_FIREFLY_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_firefly_2_explodes_to, EL_BD_EXPLODING_1 + &li.bd_firefly_2_explodes_to, EL_BDX_EXPLODING_1 }, { - EL_BD_BUTTERFLY_1, -1, + EL_BDX_BUTTERFLY_1, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_butterfly_1_explodes_to, EL_BD_DIAMOND_NATIVE_GROWING_1 + &li.bd_butterfly_1_explodes_to, EL_BDX_DIAMOND_GROWING_1 }, { - EL_BD_BUTTERFLY_2, -1, + EL_BDX_BUTTERFLY_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_butterfly_2_explodes_to, EL_BD_DIAMOND_NATIVE_GROWING_1 + &li.bd_butterfly_2_explodes_to, EL_BDX_DIAMOND_GROWING_1 }, { - EL_BD_STONEFLY, -1, + EL_BDX_STONEFLY, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_stonefly_explodes_to, EL_BD_ROCK_NATIVE_GROWING_1 + &li.bd_stonefly_explodes_to, EL_BDX_ROCK_GROWING_1 }, { - EL_BD_DRAGONFLY, -1, + EL_BDX_DRAGONFLY, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_dragonfly_explodes_to, EL_BD_EXPLODING_1 + &li.bd_dragonfly_explodes_to, EL_BDX_EXPLODING_1 }, { - EL_BD_DIAMOND_NATIVE_GROWING_5, -1, + EL_BDX_DIAMOND_GROWING_5, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_diamond_birth_turns_to, EL_BD_DIAMOND_NATIVE + &li.bd_diamond_birth_turns_to, EL_BDX_DIAMOND }, { - EL_BD_BOMB_EXPLODING_4, -1, + EL_BDX_BOMB_EXPLODING_4, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_bomb_explosion_turns_to, EL_BD_WALL + &li.bd_bomb_explosion_turns_to, EL_BDX_WALL }, { - EL_BD_NITRO_PACK_EXPLODING_4, -1, + EL_BDX_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, + EL_BDX_EXPLODING_5, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), &li.bd_explosion_turns_to, EL_EMPTY }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_magic_wall_wait_hatching, FALSE }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_magic_wall_stops_amoeba, TRUE }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(3), &li.bd_magic_wall_zero_infinite, TRUE }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), &li.bd_magic_wall_break_scan, FALSE }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.bd_magic_wall_time, 999 }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_magic_wall_diamond_to, EL_BD_ROCK_NATIVE_FALLING + &li.bd_magic_wall_diamond_to, EL_BDX_ROCK_FALLING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(3), - &li.bd_magic_wall_rock_to, EL_BD_DIAMOND_NATIVE_FALLING + &li.bd_magic_wall_rock_to, EL_BDX_DIAMOND_FALLING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(4), - &li.bd_magic_wall_mega_rock_to, EL_BD_NITRO_PACK_FALLING + &li.bd_magic_wall_mega_rock_to, EL_BDX_NITRO_PACK_FALLING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(5), - &li.bd_magic_wall_nut_to, EL_BD_NUT_FALLING + &li.bd_magic_wall_nut_to, EL_BDX_NUT_FALLING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(6), - &li.bd_magic_wall_nitro_pack_to, EL_BD_MEGA_ROCK_FALLING + &li.bd_magic_wall_nitro_pack_to, EL_BDX_MEGA_ROCK_FALLING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(7), - &li.bd_magic_wall_flying_diamond_to, EL_BD_FLYING_ROCK_FLYING + &li.bd_magic_wall_flying_diamond_to, EL_BDX_FLYING_ROCK_FLYING }, { - EL_BD_MAGIC_WALL_NATIVE, -1, + EL_BDX_MAGIC_WALL, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(8), - &li.bd_magic_wall_flying_rock_to, EL_BD_FLYING_DIAMOND_FLYING + &li.bd_magic_wall_flying_rock_to, EL_BDX_FLYING_DIAMOND_FLYING }, { - EL_BD_CLOCK, -1, + EL_BDX_CLOCK, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_clock_extra_time, 30 }, { - EL_BD_VOODOO_DOLL, -1, + EL_BDX_VOODOO_DOLL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_voodoo_collects_diamonds, FALSE }, { - EL_BD_VOODOO_DOLL, -1, + EL_BDX_VOODOO_DOLL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_voodoo_hurt_kills_player, FALSE }, { - EL_BD_VOODOO_DOLL, -1, + EL_BDX_VOODOO_DOLL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(3), &li.bd_voodoo_dies_by_rock, FALSE }, { - EL_BD_VOODOO_DOLL, -1, + EL_BDX_VOODOO_DOLL, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), &li.bd_voodoo_vanish_by_explosion, TRUE }, { - EL_BD_VOODOO_DOLL, -1, + EL_BDX_VOODOO_DOLL, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(5), &li.bd_voodoo_penalty_time, 30 }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_slime_is_predictable, TRUE }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(2), &li.bd_slime_permeability_rate, 100 }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(3), &li.bd_slime_permeability_bits_c64, 0 }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_INTEGER, CONF_VALUE_32_BIT(1), &li.bd_slime_random_seed_c64, -1 }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_slime_eats_element_1, EL_BD_DIAMOND_NATIVE + &li.bd_slime_eats_element_1, EL_BDX_DIAMOND }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_slime_converts_to_element_1, EL_BD_DIAMOND_NATIVE_FALLING + &li.bd_slime_converts_to_element_1, EL_BDX_DIAMOND_FALLING }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(3), - &li.bd_slime_eats_element_2, EL_BD_ROCK_NATIVE + &li.bd_slime_eats_element_2, EL_BDX_ROCK }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(4), - &li.bd_slime_converts_to_element_2, EL_BD_ROCK_NATIVE_FALLING + &li.bd_slime_converts_to_element_2, EL_BDX_ROCK_FALLING }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(5), - &li.bd_slime_eats_element_3, EL_BD_NUT + &li.bd_slime_eats_element_3, EL_BDX_NUT }, { - EL_BD_SLIME, -1, + EL_BDX_SLIME, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(6), - &li.bd_slime_converts_to_element_3, EL_BD_NUT_FALLING + &li.bd_slime_converts_to_element_3, EL_BDX_NUT_FALLING }, { - EL_BD_ACID, -1, + EL_BDX_ACID, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_acid_eats_element, EL_BD_SAND_1 + &li.bd_acid_eats_element, EL_BDX_SAND_1 }, { - EL_BD_ACID, -1, + EL_BDX_ACID, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_acid_spread_rate, 3 }, { - EL_BD_ACID, -1, + EL_BDX_ACID, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_acid_turns_to_element, EL_BD_EXPLODING_3 + &li.bd_acid_turns_to_element, EL_BDX_EXPLODING_3 }, { - EL_BD_BITER, -1, + EL_BDX_BITER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_biter_move_delay, 0 }, { - EL_BD_BITER, -1, + EL_BDX_BITER, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_biter_eats_element, EL_BD_DIAMOND_NATIVE + &li.bd_biter_eats_element, EL_BDX_DIAMOND }, { - EL_BD_BLADDER, -1, + EL_BDX_BLADDER, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_bladder_converts_by_element, EL_BD_VOODOO_DOLL + &li.bd_bladder_converts_by_element, EL_BDX_VOODOO_DOLL }, { - EL_BD_EXPANDABLE_WALL_ANY, -1, + EL_BDX_EXPANDABLE_WALL_ANY, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_change_expanding_wall, FALSE }, { - EL_BD_EXPANDABLE_WALL_ANY, -1, + EL_BDX_EXPANDABLE_WALL_ANY, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_expanding_wall_looks_like, EL_BD_WALL + &li.bd_expanding_wall_looks_like, EL_BDX_WALL }, { - EL_BD_REPLICATOR, -1, + EL_BDX_REPLICATOR, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_replicators_active, TRUE }, { - EL_BD_REPLICATOR, -1, + EL_BDX_REPLICATOR, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(2), &li.bd_replicator_create_delay, 4 }, { - EL_BD_CONVEYOR_LEFT, -1, + EL_BDX_CONVEYOR_LEFT, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_conveyor_belts_active, TRUE }, { - EL_BD_CONVEYOR_LEFT, -1, + EL_BDX_CONVEYOR_LEFT, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_conveyor_belts_changed, FALSE }, { - EL_BD_WATER, -1, + EL_BDX_WATER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_water_cannot_flow_down, FALSE }, { - EL_BD_NUT, -1, + EL_BDX_NUT, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(1), - &li.bd_nut_content, EL_BD_NUT_BREAKING_1 + &li.bd_nut_content, EL_BDX_NUT_BREAKING_1 }, { - EL_BD_PNEUMATIC_HAMMER, -1, + EL_BDX_PNEUMATIC_HAMMER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_hammer_walls_break_delay, 5 }, { - EL_BD_PNEUMATIC_HAMMER, -1, + EL_BDX_PNEUMATIC_HAMMER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_hammer_walls_reappear, FALSE }, { - EL_BD_PNEUMATIC_HAMMER, -1, + EL_BDX_PNEUMATIC_HAMMER, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(3), &li.bd_hammer_walls_reappear_delay, 100 }, { - EL_BD_ROCKET_LAUNCHER, -1, + EL_BDX_ROCKET_LAUNCHER, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_infinite_rockets, FALSE }, { - EL_BD_SKELETON, -1, + EL_BDX_SKELETON, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_num_skeletons_needed_for_pot, 5 }, { - EL_BD_SKELETON, -1, + EL_BDX_SKELETON, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(2), &li.bd_skeleton_worth_num_diamonds, 0 }, { - EL_BD_CREATURE_SWITCH, -1, + EL_BDX_CREATURE_SWITCH, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(1), &li.bd_creatures_start_backwards, FALSE }, { - EL_BD_CREATURE_SWITCH, -1, + EL_BDX_CREATURE_SWITCH, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_creatures_turn_on_hatching, FALSE }, { - EL_BD_CREATURE_SWITCH, -1, + EL_BDX_CREATURE_SWITCH, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.bd_creatures_auto_turn_delay, 0 }, { - EL_BD_GRAVITY_SWITCH, -1, + EL_BDX_GRAVITY_SWITCH, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_gravity_direction, GD_MV_DOWN }, { - EL_BD_GRAVITY_SWITCH, -1, + EL_BDX_GRAVITY_SWITCH, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_gravity_switch_active, FALSE }, { - EL_BD_GRAVITY_SWITCH, -1, + EL_BDX_GRAVITY_SWITCH, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(3), &li.bd_gravity_switch_delay, 10 }, { - EL_BD_GRAVITY_SWITCH, -1, + EL_BDX_GRAVITY_SWITCH, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), &li.bd_gravity_affects_all, TRUE }, @@ -1134,88 +1134,88 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.bd_amoeba_1_threshold_too_big, 200 }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(2), &li.bd_amoeba_1_slow_growth_time, 200 }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(3), - &li.bd_amoeba_1_content_too_big, EL_BD_ROCK_NATIVE + &li.bd_amoeba_1_content_too_big, EL_BDX_ROCK }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(4), - &li.bd_amoeba_1_content_enclosed, EL_BD_DIAMOND_NATIVE + &li.bd_amoeba_1_content_enclosed, EL_BDX_DIAMOND }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_amoeba_1_slow_growth_rate, 3 }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(2), &li.bd_amoeba_1_fast_growth_rate, 25 }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(3), &li.bd_amoeba_wait_for_hatching, FALSE }, { - EL_BD_AMOEBA_1, -1, + EL_BDX_AMOEBA_1, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), &li.bd_amoeba_start_immediately, TRUE }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(1), &li.bd_amoeba_2_threshold_too_big, 200 }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_INTEGER, CONF_VALUE_16_BIT(2), &li.bd_amoeba_2_slow_growth_time, 200 }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(3), - &li.bd_amoeba_2_content_too_big, EL_BD_ROCK_NATIVE + &li.bd_amoeba_2_content_too_big, EL_BDX_ROCK }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(4), - &li.bd_amoeba_2_content_enclosed, EL_BD_DIAMOND_NATIVE + &li.bd_amoeba_2_content_enclosed, EL_BDX_DIAMOND }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(5), &li.bd_amoeba_2_content_exploding, EL_EMPTY }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(6), - &li.bd_amoeba_2_content_looks_like, EL_BD_AMOEBA_2 + &li.bd_amoeba_2_content_looks_like, EL_BDX_AMOEBA_2 }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(1), &li.bd_amoeba_2_slow_growth_rate, 3 }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_INTEGER, CONF_VALUE_8_BIT(2), &li.bd_amoeba_2_fast_growth_rate, 25 }, { - EL_BD_AMOEBA_2, -1, + EL_BDX_AMOEBA_2, -1, TYPE_BOOLEAN, CONF_VALUE_8_BIT(3), &li.bd_amoeba_2_explode_by_amoeba, TRUE }, @@ -2675,13 +2675,18 @@ static void ActivateLevelTemplate(void) } } +boolean isLevelsetFilename_BD(char *filename) +{ + return (strSuffixLower(filename, ".bd") || + strSuffixLower(filename, ".bdr") || + strSuffixLower(filename, ".brc") || + strSuffixLower(filename, ".gds")); +} + static boolean checkForPackageFromBasename_BD(char *basename) { // check for native BD level file extensions - if (!strSuffixLower(basename, ".bd") && - !strSuffixLower(basename, ".bdr") && - !strSuffixLower(basename, ".brc") && - !strSuffixLower(basename, ".gds")) + if (!isLevelsetFilename_BD(basename)) return FALSE; // check for standard single-level BD files (like "001.bd") @@ -4639,9 +4644,12 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) SetDefaultLevelColors_BD(); // level name - char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1); + char *cave_name_latin1 = getLatin1FromUTF8(cave->name); + char *cave_name_final = (gd_caveset_has_levels() ? + getStringPrint("%s / %d", cave_name_latin1, bd_level_nr + 1) : + getStringCopy(cave_name_latin1)); - strncpy(level->name, cave_name, MAX_LEVEL_NAME_LEN); + strncpy(level->name, cave_name_final, MAX_LEVEL_NAME_LEN); level->name[MAX_LEVEL_NAME_LEN] = '\0'; // playfield elements @@ -4649,7 +4657,8 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) for (y = 0; y < level->fieldy; y++) level->field[x][y] = CAVE_TO_LEVEL(cave->map[y][x]); - checked_free(cave_name); + checked_free(cave_name_latin1); + checked_free(cave_name_final); } static void setTapeInfoToDefaults(void); @@ -9036,6 +9045,46 @@ void DumpLevels(void) CloseAllAndExit(0); } +void DumpLevelsetFromFilename_BD(char *filename) +{ + if (leveldir_current == NULL) // no levelsets loaded yet + bd_open_all(); + + if (!LoadNativeLevel_BD(filename, 0, FALSE)) + CloseAllAndExit(0); // function has already printed warning + + PrintLine("-", 79); + Print("Levelset '%s'\n", filename); + PrintLine("-", 79); + + DumpLevelset_BD(); + + PrintLine("-", 79); + + CloseAllAndExit(0); +} + +void DumpLevelset(void) +{ + static LevelDirTree *dumplevelset_leveldir = NULL; + + dumplevelset_leveldir = getTreeInfoFromIdentifier(leveldir_first, + global.dumplevelset_leveldir); + if (dumplevelset_leveldir == NULL) + Fail("no such level identifier: '%s'", global.dumplevelset_leveldir); + + PrintLine("-", 79); + Print("Levelset '%s'\n", dumplevelset_leveldir->identifier); + PrintLine("-", 79); + + Print("Number of levels: %d\n", dumplevelset_leveldir->levels); + Print("First level number: %d\n", dumplevelset_leveldir->first_level); + + PrintLine("-", 79); + + CloseAllAndExit(0); +} + // ============================================================================ // tape file functions @@ -11029,11 +11078,11 @@ static struct TokenInfo editor_cascade_setup_tokens[] = }, { TYPE_SWITCH, - &setup.editor_cascade.el_bd_native, "editor.cascade.el_bd_native" + &setup.editor_cascade.el_bdx, "editor.cascade.el_bdx" }, { TYPE_SWITCH, - &setup.editor_cascade.el_bd_effects, "editor.cascade.el_bd_effects" + &setup.editor_cascade.el_bdx_effects, "editor.cascade.el_bdx_effects" }, { TYPE_SWITCH, @@ -11661,10 +11710,10 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->bd_skip_hatching = FALSE; si->bd_scroll_delay = TRUE; si->bd_show_invisible_outbox = FALSE; - si->bd_smooth_movements = STATE_AUTO; + si->bd_smooth_movements = STATE_TRUE; si->bd_pushing_graphics = STATE_TRUE; si->bd_up_down_graphics = STATE_TRUE; - si->bd_skip_falling_sounds = STATE_AUTO; + si->bd_skip_falling_sounds = STATE_TRUE; si->bd_palette_c64 = GD_DEFAULT_PALETTE_C64; si->bd_palette_c64dtv = GD_DEFAULT_PALETTE_C64DTV; si->bd_palette_atari = GD_DEFAULT_PALETTE_ATARI; @@ -11930,8 +11979,8 @@ static void setSetupInfoToDefaults_ServerSetup(struct SetupInfo *si) static void setSetupInfoToDefaults_EditorCascade(struct SetupInfo *si) { si->editor_cascade.el_bd = TRUE; - si->editor_cascade.el_bd_native = TRUE; - si->editor_cascade.el_bd_effects = FALSE; + si->editor_cascade.el_bdx = TRUE; + si->editor_cascade.el_bdx_effects = FALSE; si->editor_cascade.el_em = TRUE; si->editor_cascade.el_emc = TRUE; si->editor_cascade.el_rnd = TRUE;