Pass array<> to create_bfs_list
This commit is contained in:
parent
bb60f64001
commit
0ea95e87e7
|
@ -267,12 +267,14 @@ extern int Stolen_item_index; // Used in ai.c for controlling rate of Thief fl
|
|||
// -- unused, 08/07/95 -- extern void ai_turn_randomly(vms_vector *vec_to_player, object *obj, fix rate, int previous_visibility);
|
||||
extern void init_ai_frame(void);
|
||||
|
||||
void create_bfs_list(segnum_t start_seg, segnum_t bfs_list[], unsigned &length, unsigned max_segs);
|
||||
__attribute_warn_unused_result
|
||||
std::size_t create_bfs_list(segnum_t start_seg, segnum_t *bfs_list, std::size_t max_segs);
|
||||
|
||||
template <std::size_t N>
|
||||
void create_bfs_list(segnum_t start_seg, segnum_t (&bfs_list)[N], unsigned &length)
|
||||
__attribute_warn_unused_result
|
||||
std::size_t create_bfs_list(segnum_t start_seg, array<segnum_t, N> &bfs_list)
|
||||
{
|
||||
create_bfs_list(start_seg, bfs_list, length, N);
|
||||
return create_bfs_list(start_seg, bfs_list.data(), N);
|
||||
}
|
||||
extern void init_thief_for_level();
|
||||
|
||||
|
|
|
@ -191,14 +191,10 @@ static int segment_is_reachable(const vcsegptr_t segp, int sidenum)
|
|||
// Output:
|
||||
// bfs_list: array of shorts, each reachable segment. Includes start segment.
|
||||
// length: number of elements in bfs_list
|
||||
void create_bfs_list(segnum_t start_seg, segnum_t bfs_list[], unsigned &length, unsigned max_segs)
|
||||
std::size_t create_bfs_list(segnum_t start_seg, segnum_t *const bfs_list, std::size_t max_segs)
|
||||
{
|
||||
int head, tail;
|
||||
std::size_t head = 0, tail = 0;
|
||||
visited_segment_bitarray_t visited;
|
||||
|
||||
head = 0;
|
||||
tail = 0;
|
||||
|
||||
bfs_list[head++] = start_seg;
|
||||
visited[start_seg] = true;
|
||||
|
||||
|
@ -222,7 +218,7 @@ void create_bfs_list(segnum_t start_seg, segnum_t bfs_list[], unsigned &length,
|
|||
}
|
||||
}
|
||||
}
|
||||
length = head;
|
||||
return head;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
@ -556,10 +552,8 @@ static objnum_t exists_in_mine_2(const vcsegptridx_t segp, int objtype, int obji
|
|||
// -----------------------------------------------------------------------------
|
||||
static segnum_t exists_fuelcen_in_mine(segnum_t start_seg)
|
||||
{
|
||||
segnum_t bfs_list[MAX_SEGMENTS];
|
||||
unsigned length;
|
||||
|
||||
create_bfs_list(start_seg, bfs_list, length);
|
||||
array<segnum_t, MAX_SEGMENTS> bfs_list;
|
||||
const auto length = create_bfs_list(start_seg, bfs_list);
|
||||
auto predicate = [](const segnum_t &s) { return Segments[s].special == SEGMENT_IS_FUELCEN; };
|
||||
{
|
||||
auto rb = partial_range(bfs_list, length);
|
||||
|
@ -581,10 +575,8 @@ static segnum_t exists_fuelcen_in_mine(segnum_t start_seg)
|
|||
// -2 means object does exist in mine, but buddy-bot can't reach it (eg, behind triggered wall)
|
||||
static objnum_t exists_in_mine(segnum_t start_seg, int objtype, int objid, int special)
|
||||
{
|
||||
segnum_t bfs_list[MAX_SEGMENTS];
|
||||
unsigned length;
|
||||
|
||||
create_bfs_list(start_seg, bfs_list, length);
|
||||
array<segnum_t, MAX_SEGMENTS> bfs_list;
|
||||
const auto length = create_bfs_list(start_seg, bfs_list);
|
||||
|
||||
range_for (auto segnum, partial_range(bfs_list, length))
|
||||
{
|
||||
|
|
|
@ -2863,10 +2863,8 @@ void init_ai_frame(void)
|
|||
#define MNRS_SEG_MAX 70
|
||||
static void make_nearby_robot_snipe(void)
|
||||
{
|
||||
unsigned bfs_length;
|
||||
segnum_t bfs_list[MNRS_SEG_MAX];
|
||||
|
||||
create_bfs_list(ConsoleObject->segnum, bfs_list, bfs_length);
|
||||
array<segnum_t, MNRS_SEG_MAX> bfs_list;
|
||||
const auto bfs_length = create_bfs_list(ConsoleObject->segnum, bfs_list);
|
||||
|
||||
range_for (auto &i, partial_range(bfs_list, bfs_length)) {
|
||||
range_for (auto objp, objects_in(Segments[i]))
|
||||
|
|
Loading…
Reference in a new issue