Random map gen is mostly working, now to clean it up.
This commit is contained in:
parent
a82944f55a
commit
3a43324fa2
3 changed files with 139 additions and 35 deletions
22
map.hpp
22
map.hpp
|
@ -4,6 +4,17 @@
|
|||
#include <string>
|
||||
#include <random>
|
||||
|
||||
#define INV_WALL 0
|
||||
#define INV_SPACE 1
|
||||
|
||||
#define WALL_VALUE 1
|
||||
#define SPACE_VALUE 0
|
||||
|
||||
struct Point {
|
||||
size_t x = 0;
|
||||
size_t y = 0;
|
||||
};
|
||||
|
||||
struct Pair {
|
||||
size_t j = 0;
|
||||
size_t i = 0;
|
||||
|
@ -16,10 +27,8 @@ struct Room {
|
|||
size_t y = 0;
|
||||
size_t width = 0;
|
||||
size_t height = 0;
|
||||
size_t door_x = 0;
|
||||
size_t door_y = 0;
|
||||
|
||||
std::vector<Room> next;
|
||||
Point entry;
|
||||
Point exit;
|
||||
};
|
||||
|
||||
typedef std::vector<Pair> PairList;
|
||||
|
@ -58,9 +67,14 @@ public:
|
|||
|
||||
void make_room(size_t origin_y, size_t origin_x, size_t width, size_t height);
|
||||
|
||||
void add_door(Room &room);
|
||||
bool inmap(size_t x, size_t y);
|
||||
bool neighbors(Point &out, bool up);
|
||||
void generate();
|
||||
void place_rooms(Room &root);
|
||||
void make_paths();
|
||||
void partition_map(Room &cur, int depth);
|
||||
bool walk(Room &src, Room &target);
|
||||
void set_door(Room &room, int value);
|
||||
void dump();
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue