… | |
… | |
17 | } Room; |
17 | } Room; |
18 | |
18 | |
19 | static int roguelike_place_room (Room * Rooms, int xsize, int ysize, int nrooms); |
19 | static int roguelike_place_room (Room * Rooms, int xsize, int ysize, int nrooms); |
20 | static void roguelike_make_rooms (Room * Rooms, char **maze, int options); |
20 | static void roguelike_make_rooms (Room * Rooms, char **maze, int options); |
21 | static void roguelike_link_rooms (Room * Rooms, char **maze, int xsize, int ysize); |
21 | static void roguelike_link_rooms (Room * Rooms, char **maze, int xsize, int ysize); |
22 | |
|
|
23 | |
22 | |
24 | int |
23 | int |
25 | surround_check (char **layout, int i, int j, int Xsize, int Ysize) |
24 | surround_check (char **layout, int i, int j, int Xsize, int Ysize) |
26 | { |
25 | { |
27 | /* 1 = wall to left, |
26 | /* 1 = wall to left, |
… | |
… | |
174 | /* decide on the base x and y sizes */ |
173 | /* decide on the base x and y sizes */ |
175 | |
174 | |
176 | x_basesize = xsize / isqrt (nrooms); |
175 | x_basesize = xsize / isqrt (nrooms); |
177 | y_basesize = ysize / isqrt (nrooms); |
176 | y_basesize = ysize / isqrt (nrooms); |
178 | |
177 | |
179 | |
178 | tx = rndm (xsize); |
180 | tx = RANDOM () % xsize; |
179 | ty = rndm (ysize); |
181 | ty = RANDOM () % ysize; |
|
|
182 | |
180 | |
183 | /* generate a distribution of sizes centered about basesize */ |
181 | /* generate a distribution of sizes centered about basesize */ |
184 | sx = (RANDOM () % x_basesize) + (RANDOM () % x_basesize) + (RANDOM () % x_basesize); |
182 | sx = rndm (x_basesize) + rndm (x_basesize) + rndm (x_basesize); |
185 | sy = (RANDOM () % y_basesize) + (RANDOM () % y_basesize) + (RANDOM () % y_basesize); |
183 | sy = rndm (y_basesize) + rndm (y_basesize) + rndm (y_basesize); |
186 | sy = (int) (sy * .5); /* renormalize */ |
184 | sy = (int) (sy * .5); /* renormalize */ |
187 | |
185 | |
188 | /* find the corners */ |
186 | /* find the corners */ |
189 | ax = tx - sx / 2; |
187 | ax = tx - sx / 2; |
190 | zx = tx + sx / 2 + sx % 2; |
188 | zx = tx + sx / 2 + sx % 2; |