]> git.lizzy.rs Git - dragonfireclient.git/blob - src/mapgen_v7.h
Send long announce as POST, show OS in useragent
[dragonfireclient.git] / src / mapgen_v7.h
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_V7_HEADER
21 #define MAPGEN_V7_HEADER
22
23 #include "mapgen.h"
24
25 extern NoiseParams nparams_v7_def_terrain_base;
26 extern NoiseParams nparams_v7_def_terrain_alt;
27 extern NoiseParams nparams_v7_def_terrain_persist;
28 extern NoiseParams nparams_v7_def_height_select;
29 extern NoiseParams nparams_v7_def_filler_depth;
30 extern NoiseParams nparams_v7_def_mount_height;
31 extern NoiseParams nparams_v7_def_ridge_uwater;
32 extern NoiseParams nparams_v7_def_mountain;
33 extern NoiseParams nparams_v7_def_ridge;
34
35 struct MapgenV7Params : public MapgenParams {
36         NoiseParams np_terrain_base;
37         NoiseParams np_terrain_alt;
38         NoiseParams np_terrain_persist;
39         NoiseParams np_height_select;
40         NoiseParams np_filler_depth;
41         NoiseParams np_mount_height;
42         NoiseParams np_ridge_uwater;
43         NoiseParams np_mountain;
44         NoiseParams np_ridge;
45         
46         MapgenV7Params() {
47                 np_terrain_base    = nparams_v7_def_terrain_base;
48                 np_terrain_alt     = nparams_v7_def_terrain_alt;
49                 np_terrain_persist = nparams_v7_def_terrain_persist;
50                 np_height_select   = nparams_v7_def_height_select;
51                 np_filler_depth    = nparams_v7_def_filler_depth;
52                 np_mount_height    = nparams_v7_def_mount_height;
53                 np_ridge_uwater    = nparams_v7_def_ridge_uwater;
54                 np_mountain        = nparams_v7_def_mountain;
55                 np_ridge           = nparams_v7_def_ridge;
56         }
57         
58         ~MapgenV7Params() {}
59         
60         bool readParams(Settings *settings);
61         void writeParams(Settings *settings);
62 };
63
64 class MapgenV7 : public Mapgen {
65 public:
66         EmergeManager *emerge;
67         BiomeDefManager *bmgr;
68
69         int ystride;
70         int zstride;
71         u32 flags;
72
73         u32 blockseed;
74         v3s16 node_min;
75         v3s16 node_max;
76         v3s16 full_node_min;
77         v3s16 full_node_max;
78         
79         s16 *ridge_heightmap;
80         
81         Noise *noise_terrain_base;
82         Noise *noise_terrain_alt;
83         Noise *noise_terrain_persist;
84         Noise *noise_height_select;
85         Noise *noise_filler_depth;
86         Noise *noise_mount_height;
87         Noise *noise_ridge_uwater;
88         Noise *noise_mountain;
89         Noise *noise_ridge;
90         
91         Noise *noise_heat;
92         Noise *noise_humidity;
93         
94         content_t c_stone;
95         content_t c_dirt;
96         content_t c_dirt_with_grass;
97         content_t c_sand;
98         content_t c_water_source;
99         content_t c_lava_source;
100         content_t c_ice;
101         content_t c_gravel;
102         content_t c_cobble;
103         content_t c_desert_sand;
104         content_t c_desert_stone;
105
106         MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge);
107         ~MapgenV7();
108         
109         virtual void makeChunk(BlockMakeData *data);
110         int getGroundLevelAtPoint(v2s16 p);
111         Biome *getBiomeAtPoint(v3s16 p);
112
113         float baseTerrainLevelAtPoint(int x, int z);
114         float baseTerrainLevelFromMap(int index);
115         bool getMountainTerrainAtPoint(int x, int y, int z);
116         bool getMountainTerrainFromMap(int idx_xyz, int idx_xz, int y);
117         
118         void calculateNoise();
119         
120         virtual int generateTerrain();
121         int generateBaseTerrain();
122         void generateMountainTerrain();
123         void generateRidgeTerrain();
124         
125         void generateBiomes();
126         void dustTopNodes();
127         
128         //void addTopNodes();
129         
130         void generateCaves(int max_stone_y);
131 };
132
133 struct MapgenFactoryV7 : public MapgenFactory {
134         Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) {
135                 return new MapgenV7(mgid, (MapgenV7Params *)params, emerge);
136         };
137         
138         MapgenParams *createMapgenParams() {
139                 return new MapgenV7Params();
140         };
141 };
142
143 #endif