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.30 by root, Mon Oct 29 23:55:54 2012 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4 * Copyright (©) 2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) Crossfire Development Team (restored, original file without copyright notice) 5 * Copyright (©) 1994-2004 Crossfire Development Team (restored, original file without copyright notice)
6 * 6 *
7 * Deliantra is free software: you can redistribute it and/or modify it under 7 * Deliantra is free software: you can redistribute it and/or modify it under
8 * the terms of the Affero GNU General Public License as published by the 8 * the terms of the Affero GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your 9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version. 10 * option) any later version.
11 * 11 *
12 * This program is distributed in the hope that it will be useful, 12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details. 15 * GNU General Public License for more details.
16 * 16 *
17 * You should have received a copy of the Affero GNU General Public License 17 * You should have received a copy of the Affero GNU General Public License
18 * and the GNU General Public License along with this program. If not, see 18 * and the GNU General Public License along with this program. If not, see
19 * <http://www.gnu.org/licenses/>. 19 * <http://www.gnu.org/licenses/>.
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