diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-23 20:38:59 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-23 20:38:59 +0000 |
commit | 742b5eb9836417ae5c0a6c2bb915eda51ea527a8 (patch) | |
tree | a28a608077b5ce038ecd511dca4e77c8c9bc2046 /crawl-ref/source/dungeon.cc | |
parent | 9007dee72716b25f791d49beabe2d5b662086f7b (diff) | |
download | crawl-ref-742b5eb9836417ae5c0a6c2bb915eda51ea527a8.tar.gz crawl-ref-742b5eb9836417ae5c0a6c2bb915eda51ea527a8.zip |
Discard more junk parameters from vault building routines.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7558 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r-- | crawl-ref/source/dungeon.cc | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index ed49e16bf9..2e5322e791 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -196,18 +196,16 @@ static void _jelly_pit(int level_number, spec_room &sr); // VAULT FUNCTIONS static bool _build_secondary_vault(int level_number, int vault, int rune_subst = -1, - bool generating_level = true, bool clobber = false, bool make_no_exits = false, const coord_def &where = coord_def(-1, -1)); static bool _build_vaults(int level_number, int vault_number, int rune_subst = -1, bool build_only = false, - bool check_vault_place = false, - bool generating_level = true, bool clobber = false, + bool check_collisions = false, bool make_no_exits = false, const coord_def &where = coord_def(-1, -1)); static bool _build_minivaults(int level_number, int force_vault, - bool level_builder = true, bool clobber = false, + bool clobber = false, bool make_no_exits = false, const coord_def &where = coord_def() ); static void _vault_grid( vault_placement &, @@ -242,6 +240,8 @@ std::set<std::string> Level_Unique_Tags; std::string dgn_Build_Method; std::string dgn_Layout_Type; +bool Generating_Level = false; + static int can_create_vault = true; static bool dgn_level_vetoed = false; static bool use_random_maps = true; @@ -287,6 +287,8 @@ bool builder(int level_number, int level_type) const std::set<std::string> uniq_tags = you.uniq_map_tags; const std::set<std::string> uniq_names = you.uniq_map_names; + unwind_bool levelgen(Generating_Level, true); + // N tries to build the level, after which we bail with a capital B. int tries = 20; while (tries-- > 0) @@ -2000,8 +2002,8 @@ static void _prepare_shoals(int level_number) // Place the rune int vaultidx = random_map_for_tag("shoal_rune", true); - _build_minivaults( level_number, vaultidx, true, false, false, - centres[1] ); + _build_minivaults( level_number, vaultidx, false, false, + centres[1] ); for ( int i = 2; i < num_islands; ++i ) { @@ -2012,7 +2014,7 @@ static void _prepare_shoals(int level_number) } while ( vaultidx == -1 ); - _build_minivaults( level_number, vaultidx, true, false, false, + _build_minivaults( level_number, vaultidx, false, false, centres[i] ); } } @@ -3933,8 +3935,8 @@ static bool _find_minivault_place(const vault_placement &place, } static bool _build_minivaults(int level_number, int force_vault, - bool building_level, bool clobber, - bool make_no_exits, const coord_def &where) + bool clobber, bool make_no_exits, + const coord_def &where) { if (dgn_check_connectivity && !dgn_zones) dgn_zones = _dgn_count_disconnected_zones(false); @@ -3984,7 +3986,7 @@ static bool _build_minivaults(int level_number, int force_vault, const dungeon_feature_type oldgrid = grd(*ri); _vault_grid( place, feat, *ri, target_connections ); - if (!building_level) + if (!Generating_Level) { link_items(); const dungeon_feature_type newgrid = grd(*ri); @@ -4393,14 +4395,11 @@ static dungeon_feature_type _dgn_find_rune_subst_tags(const std::string &tags) // // NOTE: encompass maps will destroy the existing level! // -// generating_level: If true, assumes that this is in the middle of normal -// level generation, and does not link items or handle -// changing terrain. // clobber: If true, assumes the newly placed vault can clobber existing // items and monsters (items may be destroyed, monsters may be // teleported). -bool dgn_place_map(int map, bool generating_level, bool clobber, - bool make_no_exits, const coord_def &where) +bool dgn_place_map(int map, bool clobber, bool make_no_exits, + const coord_def &where) { const dgn_colour_override_manager colour_man; @@ -4408,12 +4407,12 @@ bool dgn_place_map(int map, bool generating_level, bool clobber, bool did_map = false; bool fixup = false; - if (mdef->orient == MAP_ENCOMPASS && !generating_level) + if (mdef->orient == MAP_ENCOMPASS && !Generating_Level) { if (clobber) { // For encompass maps, clear the entire level. - generating_level = true; + unwind_bool levgen(Generating_Level, true); fixup = true; _reset_level(); dungeon_events.clear(); @@ -4430,8 +4429,8 @@ bool dgn_place_map(int map, bool generating_level, bool clobber, if (mdef->is_minivault()) { - did_map = _build_minivaults(you.your_level, map, generating_level, - clobber, make_no_exits, where); + did_map = _build_minivaults(you.your_level, map, clobber, + make_no_exits, where); } else { @@ -4439,12 +4438,11 @@ bool dgn_place_map(int map, bool generating_level, bool clobber, if (mdef->has_tag_suffix("_entry")) rune_subst = _dgn_find_rune_subst_tags(mdef->tags); did_map = _build_secondary_vault(you.your_level, map, rune_subst, - generating_level, clobber, - make_no_exits, where); + clobber, make_no_exits, where); } // Activate any markers within the map. - if (did_map && !generating_level) + if (did_map && !Generating_Level) { const vault_placement &vp = Level_Vaults[Level_Vaults.size() - 1]; for (int y = vp.pos.y; y < vp.pos.y + vp.size.y; ++y) @@ -4469,7 +4467,7 @@ bool dgn_place_map(int map, bool generating_level, bool clobber, you_teleport_now(false, false); } - if (fixup || !generating_level) + if (fixup || !Generating_Level) setup_environment_effects(); return (did_map); @@ -4478,13 +4476,12 @@ bool dgn_place_map(int map, bool generating_level, bool clobber, // Places a vault somewhere in an already built level if possible. // Returns true if the vault was successfully placed. static bool _build_secondary_vault(int level_number, int vault, - int rune_subst, bool generating_level, - bool clobber, bool no_exits, - const coord_def &where) + int rune_subst, bool clobber, + bool no_exits, const coord_def &where) { dgn_zones = _dgn_count_disconnected_zones(false); - if (_build_vaults(level_number, vault, rune_subst, true, true, - generating_level, clobber, no_exits, where)) + if (_build_vaults(level_number, vault, rune_subst, true, !clobber, + no_exits, where)) { const vault_placement &vp = Level_Vaults[ Level_Vaults.size() - 1 ]; _connect_vault(vp); @@ -4496,7 +4493,6 @@ static bool _build_secondary_vault(int level_number, int vault, static bool _build_vaults(int level_number, int force_vault, int rune_subst, bool build_only, bool check_collisions, - bool generating_level, bool clobber, bool make_no_exits, const coord_def &where) { FixedVector < char, 10 > stair_exist; @@ -4515,7 +4511,7 @@ static bool _build_vaults(int level_number, int force_vault, int rune_subst, place.pos = where; const int gluggy = vault_main(vgrid, place, force_vault, - check_collisions, clobber); + check_collisions); if (gluggy == MAP_NONE || !gluggy) return (false); @@ -4534,7 +4530,7 @@ static bool _build_vaults(int level_number, int force_vault, int rune_subst, const dungeon_feature_type oldgrid = grd(*ri); _vault_grid( place, vgrid[ri->y][ri->x], *ri, target_connections ); - if (!generating_level) + if (!Generating_Level) { // Have to link items each square at a time, or // dungeon_terrain_changed could blow up. |