X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmapgen_v7.h;h=a7c80928f83e172a6ea8a26a283773ec48027c7d;hb=58e6d25e033c76dc91aaac18fdeda92ac23fe0e1;hp=73fa9be0392b5b0745b9fc7428672f3d14bcc083;hpb=8ec3fc35c656544a55f7f8ece9359c9e2b472e8f;p=oweals%2Fminetest.git diff --git a/src/mapgen_v7.h b/src/mapgen_v7.h index 73fa9be03..a7c80928f 100644 --- a/src/mapgen_v7.h +++ b/src/mapgen_v7.h @@ -22,31 +22,30 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapgen.h" -extern NoiseParams nparams_v7_def_terrain_base; -extern NoiseParams nparams_v7_def_terrain_alt; -extern NoiseParams nparams_v7_def_terrain_mod; -extern NoiseParams nparams_v7_def_terrain_persist; -extern NoiseParams nparams_v7_def_height_select; -extern NoiseParams nparams_v7_def_ridge; - -struct MapgenV7Params : public MapgenParams { - NoiseParams *np_terrain_base; - NoiseParams *np_terrain_alt; - NoiseParams *np_terrain_mod; - NoiseParams *np_terrain_persist; - NoiseParams *np_height_select; - NoiseParams *np_ridge; +/////////////////// Mapgen V7 flags +#define MGV7_MOUNTAINS 0x01 +#define MGV7_RIDGES 0x02 + + +extern FlagDesc flagdesc_mapgen_v7[]; + + +struct MapgenV7Params : public MapgenSpecificParams { + u32 spflags; + NoiseParams np_terrain_base; + NoiseParams np_terrain_alt; + NoiseParams np_terrain_persist; + NoiseParams np_height_select; + NoiseParams np_filler_depth; + NoiseParams np_mount_height; + NoiseParams np_ridge_uwater; + NoiseParams np_mountain; + NoiseParams np_ridge; - MapgenV7Params() { - np_terrain_base = &nparams_v7_def_terrain_base; - np_terrain_alt = &nparams_v7_def_terrain_alt; - np_terrain_mod = &nparams_v7_def_terrain_mod; - np_terrain_persist = &nparams_v7_def_terrain_persist; - np_height_select = &nparams_v7_def_height_select; - np_ridge = &nparams_v7_def_ridge; - } + MapgenV7Params(); + ~MapgenV7Params() {} - bool readParams(Settings *settings); + void readParams(Settings *settings); void writeParams(Settings *settings); }; @@ -56,8 +55,9 @@ public: BiomeDefManager *bmgr; int ystride; - v3s16 csize; + int zstride; u32 flags; + u32 spflags; u32 blockseed; v3s16 node_min; @@ -65,16 +65,16 @@ public: v3s16 full_node_min; v3s16 full_node_max; - s16 *heightmap; s16 *ridge_heightmap; - u8 *biomemap; Noise *noise_terrain_base; Noise *noise_terrain_alt; - Noise *noise_terrain_mod; Noise *noise_terrain_persist; Noise *noise_height_select; - + Noise *noise_filler_depth; + Noise *noise_mount_height; + Noise *noise_ridge_uwater; + Noise *noise_mountain; Noise *noise_ridge; Noise *noise_heat; @@ -86,38 +86,45 @@ public: content_t c_sand; content_t c_water_source; content_t c_lava_source; + content_t c_ice; content_t c_gravel; content_t c_cobble; content_t c_desert_sand; content_t c_desert_stone; - MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge); + MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge); ~MapgenV7(); - void makeChunk(BlockMakeData *data); + virtual void makeChunk(BlockMakeData *data); int getGroundLevelAtPoint(v2s16 p); Biome *getBiomeAtPoint(v3s16 p); float baseTerrainLevelAtPoint(int x, int z); float baseTerrainLevelFromMap(int index); + bool getMountainTerrainAtPoint(int x, int y, int z); + bool getMountainTerrainFromMap(int idx_xyz, int idx_xz, int y); + void calculateNoise(); - int calcHeightMap(); - void generateTerrain(); - void carveRidges(); - //void carveRivers(); //experimental + virtual int generateTerrain(); + int generateBaseTerrain(); + void generateMountainTerrain(); + void generateRidgeTerrain(); + + void generateBiomes(); + void dustTopNodes(); + + //void addTopNodes(); - void testBiomes(); - void addTopNodes(); - void growGrass(); + void generateCaves(int max_stone_y); }; struct MapgenFactoryV7 : public MapgenFactory { Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) { - return new MapgenV7(mgid, (MapgenV7Params *)params, emerge); + return new MapgenV7(mgid, params, emerge); }; - MapgenParams *createMapgenParams() { + MapgenSpecificParams *createMapgenParams() { return new MapgenV7Params(); }; };