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.19 by root, Sat Jul 3 19:22:21 2010 UTC vs.
Revision 1.21 by root, Sun Jul 4 01:01:42 2010 UTC

812 for (int n = w * h / 30 + 1; n--; ) 812 for (int n = w * h / 30 + 1; n--; )
813 { 813 {
814 int rw = rmg_rndm (6, 10); 814 int rw = rmg_rndm (6, 10);
815 int rh = rmg_rndm (6, 10); 815 int rh = rmg_rndm (6, 10);
816 816
817 if (rw > w || rh > h)
818 continue;
819
817 int rx = rmg_rndm (0, w - rw); 820 int rx = rmg_rndm (0, w - rw);
818 int ry = rmg_rndm (0, h - rh); 821 int ry = rmg_rndm (0, h - rh);
819 822
820 rect (rx, ry, rx + rw, ry + rh, '#'); 823 rect (rx, ry, rx + rw, ry + rh, '#');
821 fill_rect (rx + 1, ry + 1, rx + rw - 1, ry + rh - 1, 0); 824 fill_rect (rx + 1, ry + 1, rx + rw - 1, ry + rh - 1, 0);
824 border (); 827 border ();
825 isolation_remover (0); 828 isolation_remover (0);
826} 829}
827 830
828static void 831static void
829gen_mixed_ (layout &maze, random_map_params *RP, int dir) 832gen_mixed_ (layout &maze, random_map_params *RP)
830{ 833{
834 int dir;
835
831 if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3)) 836 if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3))
832 dir = 2; // stop recursion randomly 837 dir = 2; // stop recursion randomly
838 else
839 dir = maze.w > maze.h;
833 840
834 if (dir == 0 && maze.w > 16) 841 if (dir == 0 && maze.w > 16)
835 { 842 {
836 int m = rmg_rndm (8, maze.w - 8); 843 int m = rmg_rndm (8, maze.w - 8);
837 844
838 layout m1 (maze, 0, 0, m , maze.h); gen_mixed_ (m1, RP, !dir); 845 layout m1 (maze, 0, 0, m , maze.h); gen_mixed_ (m1, RP);
839 layout m2 (maze, m, 0, maze.w, maze.h); gen_mixed_ (m2, RP, !dir); 846 layout m2 (maze, m, 0, maze.w, maze.h); gen_mixed_ (m2, RP);
840 } 847 }
841 else if (dir == 1 && maze.h > 16) 848 else if (dir == 1 && maze.h > 16)
842 { 849 {
843 int m = rmg_rndm (8, maze.h - 8); 850 int m = rmg_rndm (8, maze.h - 8);
844 851
845 layout m1 (maze, 0, 0, maze.w, m ); gen_mixed_ (m1, RP, !dir); 852 layout m1 (maze, 0, 0, maze.w, m ); gen_mixed_ (m1, RP);
846 layout m2 (maze, 0, m, maze.w, maze.h); gen_mixed_ (m2, RP, !dir); 853 layout m2 (maze, 0, m, maze.w, maze.h); gen_mixed_ (m2, RP);
847 } 854 }
848 else 855 else
849 { 856 {
850 RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1; 857 RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1;
851 858
859// recursive subdivision with random sublayouts 866// recursive subdivision with random sublayouts
860static void 867static void
861gen_mixed (layout &maze, random_map_params *RP) 868gen_mixed (layout &maze, random_map_params *RP)
862{ 869{
863 random_map_params &rp = *new random_map_params (RP); 870 random_map_params &rp = *new random_map_params (RP);
864 gen_mixed_ (maze, &rp, rmg_rndm (2)); 871 gen_mixed_ (maze, &rp);
865 delete &rp; 872 delete &rp;
866 873
867 maze.border (); 874 maze.border ();
868 maze.isolation_remover (0); 875 maze.isolation_remover (0);
869} 876}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines