finished random room generation

This commit is contained in:
2024-07-12 20:11:56 -04:00
parent f5daea0b18
commit 606429a6ed
3 changed files with 215 additions and 176 deletions

View File

@ -42,7 +42,7 @@ public:
const std::vector<position_list> get_room_list() const;
// IMPORTANT: always print a map before anything else
void print(display &out) const;
void print(display *out) const;
position get_up_stairs() const;
position get_down_stairs() const;
@ -50,8 +50,25 @@ public:
int get_up_stairs_room() const;
int get_down_stairs_room() const;
private:
struct room {
int top;
int left;
int width;
int height;
bool operator!=(const room &r) {
return !(*this == r);
}
bool operator==(const room &r) {
return top == r.top &&
left == r.left &&
width == r.width &&
height == r.height;
}
};
position remap_index(const int idx) const {
return {idx % MAP_WIDTH, idx / MAP_HEIGHT};
return {idx % MAP_WIDTH, idx / MAP_WIDTH};
}
int remap_position(const position &pos) const {
@ -63,15 +80,17 @@ private:
RNG *rng);
std::vector<std::pair<position, int>> gen_room_dims(RNG *rng);
std::vector<std::pair<position, position>> distr_rooms(RNG *rng,
std::vector<std::pair<position, int>>
&room_dims);
std::vector<room> distr_rooms(RNG *rng,
std::vector<std::pair<position, int>> &room_dims);
bool overlap_x(std::pair<position, position> &room1,
std::pair<position, position> &room2);
bool overlap_y(std::pair<position, position> &room1,
std::pair<position, position> &room2);
void jitter(RNG *rng, std::vector<std::pair<position, position>> &rooms);
bool overlap_x(room &room1,
room &room2);
bool overlap_y(room &room1,
room &room2);
void jitter(RNG *rng, std::vector<room> &rooms);
void fill_room(const room &r, const int num);
void gen_path(std::vector<room> &rooms);
};
const std::string default_map =