Line data Source code
1 : /*
2 : Minetest
3 : Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
4 :
5 : This program is free software; you can redistribute it and/or modify
6 : it under the terms of the GNU Lesser General Public License as published by
7 : the Free Software Foundation; either version 2.1 of the License, or
8 : (at your option) any later version.
9 :
10 : This program is distributed in the hope that it will be useful,
11 : but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : GNU Lesser General Public License for more details.
14 :
15 : You should have received a copy of the GNU Lesser General Public License along
16 : with this program; if not, write to the Free Software Foundation, Inc.,
17 : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #ifndef MAPGEN_V5_HEADER
21 : #define MAPGEN_V5_HEADER
22 :
23 : #include "mapgen.h"
24 :
25 : #define LARGE_CAVE_DEPTH -256
26 :
27 : class BiomeManager;
28 :
29 : extern FlagDesc flagdesc_mapgen_v5[];
30 :
31 :
32 : struct MapgenV5Params : public MapgenSpecificParams {
33 : u32 spflags;
34 : NoiseParams np_filler_depth;
35 : NoiseParams np_factor;
36 : NoiseParams np_height;
37 : NoiseParams np_cave1;
38 : NoiseParams np_cave2;
39 : NoiseParams np_ground;
40 :
41 : MapgenV5Params();
42 0 : ~MapgenV5Params() {}
43 :
44 : void readParams(const Settings *settings);
45 : void writeParams(Settings *settings) const;
46 : };
47 :
48 :
49 : class MapgenV5 : public Mapgen {
50 : public:
51 : EmergeManager *m_emerge;
52 : BiomeManager *bmgr;
53 :
54 : int ystride;
55 : int zstride;
56 : u32 spflags;
57 :
58 : v3s16 node_min;
59 : v3s16 node_max;
60 : v3s16 full_node_min;
61 : v3s16 full_node_max;
62 :
63 : Noise *noise_filler_depth;
64 : Noise *noise_factor;
65 : Noise *noise_height;
66 : Noise *noise_cave1;
67 : Noise *noise_cave2;
68 : Noise *noise_ground;
69 :
70 : Noise *noise_heat;
71 : Noise *noise_humidity;
72 : Noise *noise_heat_blend;
73 : Noise *noise_humidity_blend;
74 :
75 : content_t c_stone;
76 : content_t c_water_source;
77 : content_t c_lava_source;
78 : content_t c_desert_stone;
79 : content_t c_ice;
80 : content_t c_sandstone;
81 :
82 : content_t c_cobble;
83 : content_t c_stair_cobble;
84 : content_t c_mossycobble;
85 : content_t c_sandstonebrick;
86 : content_t c_stair_sandstonebrick;
87 :
88 : MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge);
89 : ~MapgenV5();
90 :
91 : virtual void makeChunk(BlockMakeData *data);
92 : int getGroundLevelAtPoint(v2s16 p);
93 : void calculateNoise();
94 : int generateBaseTerrain();
95 : MgStoneType generateBiomes(float *heat_map, float *humidity_map);
96 : void generateCaves(int max_stone_y);
97 : void dustTopNodes();
98 : };
99 :
100 :
101 1 : struct MapgenFactoryV5 : public MapgenFactory {
102 0 : Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge)
103 : {
104 0 : return new MapgenV5(mgid, params, emerge);
105 : };
106 :
107 0 : MapgenSpecificParams *createMapgenParams()
108 : {
109 0 : return new MapgenV5Params();
110 : };
111 : };
112 :
113 : #endif
|