Mgfractal: Revert unnecessary duplication of parameters
[oweals/minetest.git] / src / mapgen_fractal.h
1 /*
2 Minetest
3 Copyright (C) 2010-2015 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
4 Copyright (C) 2010-2015 paramat, Matt Gregory
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License along
17 with this program; if not, write to the Free Software Foundation, Inc.,
18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #ifndef MAPGEN_FRACTAL_HEADER
22 #define MAPGEN_FRACTAL_HEADER
23
24 #include "mapgen.h"
25
26 #define MGFRACTAL_LARGE_CAVE_DEPTH -33
27
28 /////////////////// Mapgen Fractal flags
29 #define MGFRACTAL_JULIA 0x01
30
31 class BiomeManager;
32
33 extern FlagDesc flagdesc_mapgen_fractal[];
34
35
36 struct MapgenFractalParams : public MapgenSpecificParams {
37         u32 spflags;
38
39         u16 formula;
40         u16 iterations;
41         v3f scale;
42         v3f offset;
43         float slice_w;
44
45         float julia_x;
46         float julia_y;
47         float julia_z;
48         float julia_w;
49
50         NoiseParams np_seabed;
51         NoiseParams np_filler_depth;
52         NoiseParams np_cave1;
53         NoiseParams np_cave2;
54
55         MapgenFractalParams();
56         ~MapgenFractalParams() {}
57
58         void readParams(const Settings *settings);
59         void writeParams(Settings *settings) const;
60 };
61
62 class MapgenFractal : public Mapgen {
63 public:
64         EmergeManager *m_emerge;
65         BiomeManager *bmgr;
66
67         int ystride;
68         int zstride;
69         u32 spflags;
70
71         v3s16 node_min;
72         v3s16 node_max;
73         v3s16 full_node_min;
74         v3s16 full_node_max;
75
76         u16 formula;
77         u16 iterations;
78         v3f scale;
79         v3f offset;
80         float slice_w;
81
82         float julia_x;
83         float julia_y;
84         float julia_z;
85         float julia_w;
86
87         Noise *noise_seabed;
88         Noise *noise_filler_depth;
89         Noise *noise_cave1;
90         Noise *noise_cave2;
91
92         Noise *noise_heat;
93         Noise *noise_humidity;
94         Noise *noise_heat_blend;
95         Noise *noise_humidity_blend;
96
97         content_t c_stone;
98         content_t c_water_source;
99         content_t c_lava_source;
100         content_t c_desert_stone;
101         content_t c_ice;
102         content_t c_sandstone;
103
104         content_t c_cobble;
105         content_t c_stair_cobble;
106         content_t c_mossycobble;
107         content_t c_sandstonebrick;
108         content_t c_stair_sandstonebrick;
109
110         MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager *emerge);
111         ~MapgenFractal();
112
113         virtual void makeChunk(BlockMakeData *data);
114         int getGroundLevelAtPoint(v2s16 p);
115         void calculateNoise();
116         bool getFractalAtPoint(s16 x, s16 y, s16 z);
117         s16 generateTerrain();
118         MgStoneType generateBiomes(float *heat_map, float *humidity_map);
119         void dustTopNodes();
120         void generateCaves(s16 max_stone_y);
121 };
122
123 struct MapgenFactoryFractal : public MapgenFactory {
124         Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge)
125         {
126                 return new MapgenFractal(mgid, params, emerge);
127         };
128
129         MapgenSpecificParams *createMapgenParams()
130         {
131                 return new MapgenFractalParams();
132         };
133 };
134
135 #endif