Skip to content

Commit d8f3d2b

Browse files
authored
Merge pull request #82573 from sparr/computer_map_floodfill
Reveal only contiguous subway/sewer from computer map
2 parents 4dc2e1e + 679e110 commit d8f3d2b

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/computer_session.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
#include <array>
55
#include <cmath>
66
#include <cstdlib>
7-
#include <functional>
87
#include <memory>
98
#include <optional>
109
#include <string>
10+
#include <unordered_set>
1111
#include <utility>
1212

1313
#include "avatar.h"
@@ -26,6 +26,7 @@
2626
#include "explosion.h"
2727
#include "field_type.h"
2828
#include "flag.h"
29+
#include "flood_fill.h"
2930
#include "game.h"
3031
#include "game_inventory.h"
3132
#include "input.h"
@@ -699,14 +700,13 @@ void computer_session::helper_map( bool ( *func )( const oter_id & ), const char
699700
Character &player_character = get_player_character();
700701
player_character.mod_moves( -to_moves<int>( 1_seconds ) * 0.3 );
701702
const tripoint_abs_omt center = player_character.pos_abs_omt();
702-
for( int i = -60; i <= 60; i++ ) {
703-
for( int j = -60; j <= 60; j++ ) {
704-
point offset( i, j );
705-
const oter_id &oter = overmap_buffer.ter( center + offset );
706-
if( func( oter ) ) {
707-
overmap_buffer.set_seen( center + offset, om_vision_level::details );
708-
}
709-
}
703+
std::unordered_set<tripoint_abs_omt> visited;
704+
const auto pred = [&center, &func]( const tripoint_abs_omt & p ) {
705+
const oter_id &oter = overmap_buffer.ter( p );
706+
return square_dist( center, p ) <= 90 && func( oter );
707+
};
708+
for( const auto p : ff::point_flood_fill_4_connected<std::vector>( center, visited, pred ) ) {
709+
overmap_buffer.set_seen( p, om_vision_level::details );
710710
}
711711
query_any( query );
712712
comp.remove_option( action );

0 commit comments

Comments
 (0)