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.15 by root, Sat Jul 3 03:09:27 2010 UTC vs.
Revision 1.16 by root, Sat Jul 3 11:52:11 2010 UTC

346 data [x][y] = 0; 346 data [x][y] = 0;
347} 347}
348 348
349///////////////////////////////////////////////////////////////////////////// 349/////////////////////////////////////////////////////////////////////////////
350 350
351// inspired mostly by http://www.jimrandomh.org/misc/caves.txt
352void
353layout::gen_cave (int subtype)
354{
355 switch (subtype)
356 {
357 // a rough cave
358 case 0:
359 fill_rand (rmg_rndm (85, 97));
360 break;
361
362 // corridors
363 case 1:
364 fill_rand (rmg_rndm (5, 40));
365 erode_1_2 (5, 2, 10);
366 erode_1_2 (5, -1, 10);
367 erode_1_2 (5, 2, 1);
368 break;
369
370 // somewhat open, roundish
371 case 2:
372 fill_rand (45);
373 erode_1_2 (5, 0, 5);
374 erode_1_2 (5, 1, 1);
375 break;
376
377 // wide open, some room-like structures
378 case 3:
379 fill_rand (45);
380 erode_1_2 (5, 2, 4);
381 erode_1_2 (5, -1, 3);
382 break;
383 }
384
385 border ();
386 isolation_remover ();
387}
388
389/////////////////////////////////////////////////////////////////////////////
390
391//+GPL 351//+GPL
392 352
393/* puts doors at appropriate locations in a maze. */ 353/* puts doors at appropriate locations in a maze. */
394void 354void
395layout::doorify () 355layout::doorify ()
813 } 773 }
814} 774}
815 775
816///////////////////////////////////////////////////////////////////////////// 776/////////////////////////////////////////////////////////////////////////////
817 777
778// inspired mostly by http://www.jimrandomh.org/misc/caves.txt
779void
780layout::gen_cave (int subtype)
781{
782 switch (subtype)
783 {
784 // a rough cave
785 case 0:
786 fill_rand (rmg_rndm (85, 97));
787 break;
788
789 // corridors
790 case 1:
791 fill_rand (rmg_rndm (5, 40));
792 erode_1_2 (5, 2, 10);
793 erode_1_2 (5, -1, 10);
794 erode_1_2 (5, 2, 1);
795 break;
796
797 // somewhat open, roundish
798 case 2:
799 fill_rand (45);
800 erode_1_2 (5, 0, 5);
801 erode_1_2 (5, 1, 1);
802 break;
803
804 // wide open, some room-like structures
805 case 3:
806 fill_rand (45);
807 erode_1_2 (5, 2, 4);
808 erode_1_2 (5, -1, 3);
809 break;
810 }
811
812 border ();
813 isolation_remover ();
814}
815
818static void 816static void
819gen_mixed_ (layout &maze, random_map_params *RP, int dir) 817gen_mixed_ (layout &maze, random_map_params *RP, int dir)
820{ 818{
821 if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3)) 819 if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3))
822 dir = 2; // stop recursion randomly 820 dir = 2; // stop recursion randomly
844 842
845 maze.generate (RP); 843 maze.generate (RP);
846 } 844 }
847} 845}
848 846
847// recursive subdivision with random sublayouts
849static void 848static void
850gen_mixed (layout &maze, random_map_params *RP) 849gen_mixed (layout &maze, random_map_params *RP)
851{ 850{
852 random_map_params &rp = *new random_map_params (RP); 851 random_map_params &rp = *new random_map_params (RP);
853 gen_mixed_ (maze, &rp, rmg_rndm (2)); 852 gen_mixed_ (maze, &rp, rmg_rndm (2));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines