ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/random_maps/layout.C
(Generate patch)

Comparing deliantra/server/random_maps/layout.C (file contents):
Revision 1.24 by root, Mon Jul 5 00:07:21 2010 UTC vs.
Revision 1.27 by root, Sun Aug 22 20:23:06 2010 UTC

20 * 20 *
21 * The authors can be reached via e-mail to <support@deliantra.net> 21 * The authors can be reached via e-mail to <support@deliantra.net>
22 */ 22 */
23 23
24#include <global.h> 24#include <global.h>
25#include <random_map.h> 25#include <rmg.h>
26#include <rproto.h> 26#include <rproto.h>
27 27
28void noinline 28void noinline
29layout::alloc (int w, int h) 29layout::alloc (int w, int h)
30{ 30{
312 seeds.push (point (x, y)); 312 seeds.push (point (x, y));
313 313
314 // phase 2, while we have seeds, if 314 // phase 2, while we have seeds, if
315 // seed is empty, floodfill, else grow 315 // seed is empty, floodfill, else grow
316 316
317 int rem_index = 0; // used to remove "somewhat ordered"
318
317 while (seeds.size) 319 while (seeds.size)
318 { 320 {
319 coroapi::cede_to_tick (); 321 coroapi::cede_to_tick ();
320 322
323 int i = perturb
324 ? rmg_rndm (max (0, seeds.size - 8), seeds.size - 1)
325 : rem_index ++ % seeds.size;
326
321 point p = seeds.remove (rmg_rndm (seeds.size)); 327 point p = seeds.remove (i);
322 328
323 x = p.x; 329 x = p.x;
324 y = p.y; 330 y = p.y;
325 331
326 if (!dist [x][y]) 332 if (!dist [x][y])
1007static struct demo 1013static struct demo
1008{ 1014{
1009 demo () 1015 demo ()
1010 { 1016 {
1011 rmg_rndm.seed (time (0)); 1017 rmg_rndm.seed (time (0));
1018 extern void hack();hack ();
1012 1019
1013 for(int i=1;i<100;i++) 1020 for(int i=1;i<100;i++)
1014 { 1021 {
1015 layout maze (40, 30); 1022 layout maze (40, 30);
1016 gen_village (maze); 1023 maze.fill_rand (99);
1017 maze.doorify (); 1024 maze.border ();
1025 maze.isolation_remover (2);
1018 maze.print (); 1026 maze.print ();
1019 exit(0);
1020 } 1027 }
1021 1028
1022 exit (1); 1029 exit (1);
1023 } 1030 }
1024} demo; 1031} demo;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines