From d958695281c7c79be672abda7cdaf673c27514e6 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Fri, 13 Nov 2009 21:59:47 +0100 Subject: Convert a bunch of coordinate loops to new radius_iterator. --- crawl-ref/source/effects.cc | 2 +- crawl-ref/source/spells2.cc | 14 +++++--------- crawl-ref/source/spells3.cc | 18 +++++++++--------- crawl-ref/source/spells4.cc | 4 +--- crawl-ref/source/spl-cast.cc | 9 +-------- crawl-ref/source/view.cc | 5 +++-- crawl-ref/source/xom.cc | 9 +++------ 7 files changed, 23 insertions(+), 38 deletions(-) diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index 8c521df0ac..2d9c8fbe54 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -2734,7 +2734,7 @@ bool vitrify_area(int radius) // This hinges on clear wall types having the same order as non-clear ones! const int clear_plus = DNGN_CLEAR_ROCK_WALL - DNGN_ROCK_WALL; bool something_happened = false; - for (radius_iterator ri(you.pos(), radius, false, false); ri; ++ri) + for (radius_iterator ri(you.pos(), radius, C_POINTY); ri; ++ri) { const dungeon_feature_type grid = grd(*ri); diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index e0378e81f4..4e0a3c366f 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -80,7 +80,7 @@ int detect_items(int pow) int items_found = 0; const int map_radius = 8 + random2(8) + pow; - for (radius_iterator ri(you.pos(), map_radius, true, false); ri; ++ri) + for (radius_iterator ri(you.pos(), map_radius, C_SQUARE); ri; ++ri) { // Don't expose new dug out areas: // Note: assumptions are being made here about how @@ -193,7 +193,7 @@ int detect_creatures(int pow, bool telepathic) if (!telepathic) clear_map(false); - for (radius_iterator ri(you.pos(), map_radius, true, false); ri; ++ri) + for (radius_iterator ri(you.pos(), map_radius, C_SQUARE); ri; ++ri) { if (monsters *mon = monster_at(*ri)) { @@ -219,13 +219,11 @@ int detect_creatures(int pow, bool telepathic) void corpse_rot() { - for (radius_iterator ri(you.pos(), 6); ri; ++ri) + for (radius_iterator ri(you.pos(), 6, C_ROUND, &you.get_los_no_trans()); + ri; ++ri) { - if (you.see_cell_no_trans(*ri) && !is_sanctuary(*ri) - && env.cgrid(*ri) == EMPTY_CLOUD) - { + if (!is_sanctuary(*ri) && env.cgrid(*ri) == EMPTY_CLOUD) for (stack_iterator si(*ri); si; ++si) - { if (si->base_type == OBJ_CORPSES && si->sub_type == CORPSE_BODY) { // Found a corpse. Skeletonise it if possible. @@ -239,8 +237,6 @@ void corpse_rot() // Don't look for more corpses here. break; } - } - } } if (player_can_smell()) diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc index 79d34aa1d9..524883c932 100644 --- a/crawl-ref/source/spells3.cc +++ b/crawl-ref/source/spells3.cc @@ -660,7 +660,8 @@ bool receive_corpses(int pow, coord_def where) // We should get the same number of corpses in a hallway as in an // open room. int spaces_for_corpses = 0; - for (radius_iterator ri(where, corpse_delivery_radius, true, true, true); + for (radius_iterator ri(where, corpse_delivery_radius, C_SQUARE, + &you.get_los(), true); ri; ++ri) { if (mons_class_can_pass(MONS_HUMAN, grd(*ri))) @@ -673,7 +674,9 @@ bool receive_corpses(int pow, coord_def where) int corpses_generated = 0; - for (radius_iterator ri(where, corpse_delivery_radius, false, true, false); + // XXX: Is it intentional that this loop is different from the one above? + for (radius_iterator ri(where, corpse_delivery_radius, C_ROUND, + &you.get_los()); ri; ++ri) { @@ -1074,10 +1077,9 @@ int animate_dead(actor *caster, int pow, beh_type beha, unsigned short hitting, int number_raised = 0; int number_seen = 0; - radius_iterator ri(caster->pos(), 6, true, true, false, + radius_iterator ri(caster->pos(), 6, C_SQUARE, &caster->get_los_no_trans()); - // Sweep all squares in LOS. for (; ri; ++ri) { // This will produce a message if the corpse you are butchering @@ -1749,15 +1751,13 @@ bool remove_sanctuary(bool did_attack) const int radius = 5; bool seen_change = false; - for (radius_iterator ri(env.sanctuary_pos, radius, true, false); ri; ++ri) - { + for (radius_iterator ri(env.sanctuary_pos, radius, C_SQUARE); ri; ++ri) if (is_sanctuary(*ri)) { _remove_sanctuary_property(*ri); if (you.see_cell(*ri)) seen_change = true; } - } env.sanctuary_pos.set(-1, -1); @@ -1798,7 +1798,7 @@ void decrease_sanctuary_radius() stop_running(); } - for (radius_iterator ri(env.sanctuary_pos, size+1, true, false); ri; ++ri) + for (radius_iterator ri(env.sanctuary_pos, size+1, C_SQUARE); ri; ++ri) { int dist = distance(*ri, env.sanctuary_pos); @@ -1854,7 +1854,7 @@ bool cast_sanctuary(const int power) int cloud_count = 0; monsters *seen_mon = NULL; - for (radius_iterator ri(you.pos(), radius, false, false); ri; ++ri) + for (radius_iterator ri(you.pos(), radius, C_POINTY); ri; ++ri) { const int dist = _inside_circle(*ri, radius); diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc index bbd80c8cab..6970ceb668 100644 --- a/crawl-ref/source/spells4.cc +++ b/crawl-ref/source/spells4.cc @@ -376,14 +376,12 @@ void cast_detect_secret_doors(int pow) { int found = 0; - for ( radius_iterator ri(you.pos(), 8); ri; ++ri ) - { + for (radius_iterator ri(&you.get_los()); ri; ++ri ) if (grd(*ri) == DNGN_SECRET_DOOR && random2(pow) > random2(15)) { reveal_secret_door(*ri); found++; } - } if (found) redraw_screen(); diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index 8d96fb7f82..366cfe4882 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -637,15 +637,8 @@ void inspect_spells() static int _get_dist_to_nearest_monster() { int minRange = LOS_RADIUS + 1; - for (radius_iterator ri(you.pos(), LOS_RADIUS, true, false, true); ri; ++ri) + for (radius_iterator ri(&you.get_los_no_trans(), true); ri; ++ri) { - if (!in_bounds(*ri)) - continue; - - // Can we see (and reach) the grid? - if (!you.see_cell_no_trans(*ri)) - continue; - const monsters *mon = monster_at(*ri); if (mon == NULL) continue; diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index fd4674cfce..a97b066c0f 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -364,7 +364,8 @@ bool magic_mapping(int map_radius, int proportion, bool suppress_msg, if (!deterministic) detectable = _tile_detectability(); - for (radius_iterator ri(pos, map_radius, !circular, false); ri; ++ri) + for (radius_iterator ri(pos, map_radius, circular ? C_ROUND : C_SQUARE); + ri; ++ri) { if (!wizard_map) { @@ -768,7 +769,7 @@ static bool player_view_update_at(const coord_def &gc) static void player_view_update() { std::vector update_excludes; - for (radius_iterator ri(you.pos(), LOS_RADIUS); ri; ++ri) + for (radius_iterator ri(&you.get_los()); ri; ++ri) if (player_view_update_at(*ri)) update_excludes.push_back(*ri); update_exclusion_los(update_excludes); diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc index f7a694d840..f16e188872 100644 --- a/crawl-ref/source/xom.cc +++ b/crawl-ref/source/xom.cc @@ -1975,11 +1975,8 @@ static int _xom_throw_divine_lightning(bool debug = false) static int _xom_change_scenery(bool debug = false) { std::vector candidates; - for (radius_iterator ri(you.pos(), LOS_RADIUS, false, true); ri; ++ri) + for (radius_iterator ri(&you.get_los()); ri; ++ri) { - if (!in_bounds(*ri) || !you.see_cell(*ri)) - continue; - dungeon_feature_type feat = grd(*ri); if (feat >= DNGN_FOUNTAIN_BLUE && feat <= DNGN_DRY_FOUNTAIN_BLOOD) candidates.push_back(*ri); @@ -2281,7 +2278,7 @@ static void _get_in_view(FixedVector& in_view) { in_view.init(false); - for (radius_iterator ri(you.pos(), LOS_RADIUS); ri; ++ri) + for (radius_iterator ri(&you.get_los()); ri; ++ri) in_view[grd(*ri)] = true; } @@ -3036,7 +3033,7 @@ static int _xom_repel_stairs(bool debug = false) std::vector stairs_avail; bool real_stairs = false; - for (radius_iterator ri(you.pos(), LOS_RADIUS, false, true); ri; ++ri) + for (radius_iterator ri(&you.get_los()); ri; ++ri) { dungeon_feature_type feat = grd(*ri); if (feat_stair_direction(feat) != CMD_NO_CMD -- cgit v1.2.3-54-g00ecf