… | |
… | |
827 | border (); |
827 | border (); |
828 | isolation_remover (0); |
828 | isolation_remover (0); |
829 | } |
829 | } |
830 | |
830 | |
831 | static void |
831 | static void |
832 | gen_mixed_ (layout &maze, random_map_params *RP, int dir) |
832 | gen_mixed_ (layout &maze, random_map_params *RP) |
833 | { |
833 | { |
|
|
834 | int dir; |
|
|
835 | |
834 | if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3)) |
836 | if (maze.w < 20 && maze.h < 20 && !rmg_rndm (3)) |
835 | dir = 2; // stop recursion randomly |
837 | dir = 2; // stop recursion randomly |
|
|
838 | else |
|
|
839 | dir = maze.w > maze.h; |
836 | |
840 | |
837 | if (dir == 0 && maze.w > 16) |
841 | if (dir == 0 && maze.w > 16) |
838 | { |
842 | { |
839 | int m = rmg_rndm (8, maze.w - 8); |
843 | int m = rmg_rndm (8, maze.w - 8); |
840 | |
844 | |
841 | 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); |
842 | 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); |
843 | } |
847 | } |
844 | else if (dir == 1 && maze.h > 16) |
848 | else if (dir == 1 && maze.h > 16) |
845 | { |
849 | { |
846 | int m = rmg_rndm (8, maze.h - 8); |
850 | int m = rmg_rndm (8, maze.h - 8); |
847 | |
851 | |
848 | 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); |
849 | 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); |
850 | } |
854 | } |
851 | else |
855 | else |
852 | { |
856 | { |
853 | RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1; |
857 | RP->map_layout_style = rmg_rndm (NROFLAYOUTS - 2) + 1; |
854 | |
858 | |
… | |
… | |
862 | // recursive subdivision with random sublayouts |
866 | // recursive subdivision with random sublayouts |
863 | static void |
867 | static void |
864 | gen_mixed (layout &maze, random_map_params *RP) |
868 | gen_mixed (layout &maze, random_map_params *RP) |
865 | { |
869 | { |
866 | random_map_params &rp = *new random_map_params (RP); |
870 | random_map_params &rp = *new random_map_params (RP); |
867 | gen_mixed_ (maze, &rp, rmg_rndm (2)); |
871 | gen_mixed_ (maze, &rp); |
868 | delete &rp; |
872 | delete &rp; |
869 | |
873 | |
870 | maze.border (); |
874 | maze.border (); |
871 | maze.isolation_remover (0); |
875 | maze.isolation_remover (0); |
872 | } |
876 | } |