void RoomGenerator::expand_room()

in procgen/src/roomgen.cpp [147:177]


void RoomGenerator::expand_room(std::set<int> &set, int n) {
    std::set<int> curr_set;
    curr_set.insert(set.begin(), set.end());

    for (int loop = 0; loop < n; loop++) {
        std::set<int> next;

        for (int curr_idx : curr_set) {
            if (game->get_obj(curr_idx) != SPACE)
                continue;

            int x, y;
            game->to_grid_xy(curr_idx, &x, &y);

            for (int i = -1; i <= 1; i++) {
                for (int j = -1; j <= 1; j++) {
                    if (i != 0 || j != 0) {
                        int next_idx = game->to_grid_idx(x + i, y + j);

                        if (!set_contains(set, next_idx) && game->get_obj(next_idx) == SPACE) {
                            set.insert(next_idx);
                            next.insert(next_idx);
                        }
                    }
                }
            }
        }

        curr_set = next;
    }
}