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.20 by root, Sun Jul 4 00:27:14 2010 UTC vs.
Revision 1.23 by root, Sun Jul 4 22:12:26 2010 UTC

110void 110void
111layout::fill_rand (int percent) 111layout::fill_rand (int percent)
112{ 112{
113 percent = lerp (percent, 0, 100, 0, 256); 113 percent = lerp (percent, 0, 100, 0, 256);
114 114
115 for (int x = w - 1; --x > 0; ) 115 for (int x = 0; x < w; ++x)
116 for (int y = h - 1; --y > 0; ) 116 for (int y = 0; y < h; ++y)
117 data [x][y] = rmg_rndm (256) > percent ? 0 : '#'; 117 data [x][y] = rmg_rndm (256) > percent ? 0 : '#';
118} 118}
119 119
120///////////////////////////////////////////////////////////////////////////// 120/////////////////////////////////////////////////////////////////////////////
121 121
701 701
702 return -1; 702 return -1;
703} 703}
704 704
705int 705int
706make_wall (char **maze, int x, int y, int dir) 706make_wall (layout &maze, int x, int y, int dir)
707{ 707{
708 maze[x][y] = 'D'; /* mark a door */ 708 maze[x][y] = 'D'; /* mark a door */
709 709
710 switch (dir) 710 switch (dir)
711 { 711 {
827 border (); 827 border ();
828 isolation_remover (0); 828 isolation_remover (0);
829} 829}
830 830
831static void 831static void
832gen_mixed_ (layout &maze, random_map_params *RP, int dir) 832gen_mixed_ (layout &maze, random_map_params *RP)
833{ 833{
834 if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3)) 834 if (maze.w > maze.h && maze.w > 16)
835 dir = 2; // stop recursion randomly
836
837 if (dir == 0 && maze.w > 16)
838 { 835 {
839 int m = rmg_rndm (8, maze.w - 8); 836 int m = rmg_rndm (8, maze.w - 8);
840 837
841 layout m1 (maze, 0, 0, m , maze.h); gen_mixed_ (m1, RP, !dir); 838 layout m1 (maze, 0, 0, m , maze.h); gen_mixed_ (m1, RP);
842 layout m2 (maze, m, 0, maze.w, maze.h); gen_mixed_ (m2, RP, !dir); 839 layout m2 (maze, m, 0, maze.w, maze.h); gen_mixed_ (m2, RP);
843 } 840 }
844 else if (dir == 1 && maze.h > 16) 841 else if (maze.h > 16)
845 { 842 {
846 int m = rmg_rndm (8, maze.h - 8); 843 int m = rmg_rndm (8, maze.h - 8);
847 844
848 layout m1 (maze, 0, 0, maze.w, m ); gen_mixed_ (m1, RP, !dir); 845 layout m1 (maze, 0, 0, maze.w, m ); gen_mixed_ (m1, RP);
849 layout m2 (maze, 0, m, maze.w, maze.h); gen_mixed_ (m2, RP, !dir); 846 layout m2 (maze, 0, m, maze.w, maze.h); gen_mixed_ (m2, RP);
850 } 847 }
851 else 848 else
852 { 849 {
853 RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1; 850 RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1;
854 851
862// recursive subdivision with random sublayouts 859// recursive subdivision with random sublayouts
863static void 860static void
864gen_mixed (layout &maze, random_map_params *RP) 861gen_mixed (layout &maze, random_map_params *RP)
865{ 862{
866 random_map_params &rp = *new random_map_params (RP); 863 random_map_params &rp = *new random_map_params (RP);
867 gen_mixed_ (maze, &rp, rmg_rndm (2)); 864 gen_mixed_ (maze, &rp);
868 delete &rp; 865 delete &rp;
869 866
870 maze.border (); 867 maze.border ();
871 maze.isolation_remover (0); 868 maze.isolation_remover (0);
872} 869}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines