X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmapgen_v7.h;h=3a6bc0801c86238a9bb7cab7d4ff08bcafb6b350;hb=91250c1078dc5dc5f48bba2b309920edd6cdfe68;hp=3391098ea9c7d42876cdaa52e65ca62156504c73;hpb=418c2e7a446f8f0aca9f8bd23005a5896869ef7e;p=minetest.git diff --git a/src/mapgen_v7.h b/src/mapgen_v7.h index 3391098ea..3a6bc0801 100644 --- a/src/mapgen_v7.h +++ b/src/mapgen_v7.h @@ -1,6 +1,7 @@ /* Minetest -Copyright (C) 2010-2013 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 kwolekr, Ryan Kwolek +Copyright (C) 2010-2015 paramat, Matt Gregory This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -22,105 +23,63 @@ 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; +/////////////////// Mapgen V7 flags +#define MGV7_MOUNTAINS 0x01 +#define MGV7_RIDGES 0x02 + +class BiomeManager; + +extern FlagDesc flagdesc_mapgen_v7[]; + 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; - - 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; - } - - bool readParams(Settings *settings); - void writeParams(Settings *settings); + u32 spflags; + float cave_width; + 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; + NoiseParams np_cave1; + NoiseParams np_cave2; + + MapgenV7Params(); + ~MapgenV7Params() {} + + void readParams(const Settings *settings); + void writeParams(Settings *settings) const; }; -class MapgenV7 : public Mapgen { +class MapgenV7 : public MapgenBasic { public: - EmergeManager *emerge; - BiomeDefManager *bmgr; - - int ystride; - v3s16 csize; - u32 flags; - - u32 blockseed; - v3s16 node_min; - v3s16 node_max; - 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_ridge; - - Noise *noise_heat; - Noise *noise_humidity; - - content_t c_stone; - content_t c_dirt; - content_t c_dirt_with_grass; - content_t c_sand; - content_t c_water_source; - content_t c_lava_source; - 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(); - - void makeChunk(BlockMakeData *data); - int getGroundLevelAtPoint(v2s16 p); - Biome *getBiomeAtPoint(v3s16 p); - float baseTerrainLevelAtPoint(int x, int z); + virtual MapgenType getType() const { return MAPGEN_V7; } + + virtual void makeChunk(BlockMakeData *data); + int getSpawnLevelAtPoint(v2s16 p); + + float baseTerrainLevelAtPoint(s16 x, s16 z); float baseTerrainLevelFromMap(int index); - void calculateNoise(); - int calcHeightMap(); - - void generateTerrain(); - void carveRidges(); - //void carveRivers(); //experimental - - void testBiomes(); - void addTopNodes(); - - void generateCaves(int max_stone_y); -}; + bool getMountainTerrainAtPoint(s16 x, s16 y, s16 z); + bool getMountainTerrainFromMap(int idx_xyz, int idx_xz, s16 y); + int generateTerrain(); + void generateRidgeTerrain(); -struct MapgenFactoryV7 : public MapgenFactory { - Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) { - return new MapgenV7(mgid, (MapgenV7Params *)params, emerge); - }; - - MapgenParams *createMapgenParams() { - return new MapgenV7Params(); - }; +private: + Noise *noise_terrain_base; + Noise *noise_terrain_alt; + Noise *noise_terrain_persist; + Noise *noise_height_select; + Noise *noise_mount_height; + Noise *noise_ridge_uwater; + Noise *noise_mountain; + Noise *noise_ridge; }; #endif