diff options
author | kwolekr <mirrorisim@gmail.com> | 2013-01-06 14:40:24 -0500 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2013-01-21 21:41:37 +0200 |
commit | 631a835e0782a2696762e3d55f75616f5a063394 (patch) | |
tree | 5f344ae788a50eb023e5d9fb92ed9478256c8f46 /src/mapgen.h | |
parent | 45cf32afc5554d76f7f48268a8cab5a051638761 (diff) | |
download | minetest-631a835e0782a2696762e3d55f75616f5a063394.tar.gz minetest-631a835e0782a2696762e3d55f75616f5a063394.tar.bz2 minetest-631a835e0782a2696762e3d55f75616f5a063394.zip |
Finish and clean up mapgen configuration
Diffstat (limited to 'src/mapgen.h')
-rw-r--r-- | src/mapgen.h | 129 |
1 files changed, 39 insertions, 90 deletions
diff --git a/src/mapgen.h b/src/mapgen.h index 81de0d176..ba1ea86c3 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -25,6 +25,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gamedef.h" #include "mapnode.h" #include "noise.h" +#include "settings.h" + +/////////////////// Mapgen flags +#define MG_TREES 0x01 +#define MG_CAVES 0x02 +#define MG_DUNGEONS 0x04 +#define MGV6_FORESTS 0x08 +#define MGV6_BIOME_BLEND 0x10 + +#define AVERAGE_MUD_AMOUNT 4 class BiomeDefManager; class Biome; @@ -35,6 +45,20 @@ class ManualMapVoxelManipulator; class VoxelManipulator; class INodeDefManager; +extern NoiseParams nparams_v6_def_terrain_base; +extern NoiseParams nparams_v6_def_terrain_higher; +extern NoiseParams nparams_v6_def_steepness; +extern NoiseParams nparams_v6_def_height_select; +extern NoiseParams nparams_v6_def_trees; +extern NoiseParams nparams_v6_def_mud; +extern NoiseParams nparams_v6_def_beach; +extern NoiseParams nparams_v6_def_biome; +extern NoiseParams nparams_v6_def_cave; + +extern NoiseParams nparams_v7_def_terrain; +extern NoiseParams nparams_v7_def_bgroup; +extern NoiseParams nparams_v7_def_heat; +extern NoiseParams nparams_v7_def_humidity; enum BiomeType { @@ -58,58 +82,24 @@ struct BlockMakeData { }; -/////////////////// Mapgen flags -#define MG_TREES 0x01 -#define MG_CAVES 0x02 -#define MG_DUNGEONS 0x04 -#define MGV6_FORESTS 0x08 -#define MGV6_BIOME_BLEND 0x10 - -#define AVERAGE_MUD_AMOUNT 4 - -/////////////////// Mapgen V6 perlin noise default values -NoiseParams nparams_v6_def_terrain_base = - {-AVERAGE_MUD_AMOUNT, 20.0, v3f(250.0, 250.0, 250.0), 82341, 5, 0.6}; -NoiseParams nparams_v6_def_terrain_higher = - {20.0, 16.0, v3f(500.0, 500.0, 500.0), 85309, 5, 0.6}; -NoiseParams nparams_v6_def_steepness = - {0.85, 0.5, v3f(125.0, 125.0, 125.0), -932, 5, 0.7}; -NoiseParams nparams_v6_def_height_select = - {0.5, 1.0, v3f(250.0, 250.0, 250.0), 4213, 5, 0.69}; -NoiseParams nparams_v6_def_trees = - {0.0, 1.0, v3f(125.0, 125.0, 125.0), 2, 4, 0.66}; -NoiseParams nparams_v6_def_mud = - {AVERAGE_MUD_AMOUNT, 2.0, v3f(200.0, 200.0, 200.0), 91013, 3, 0.55}; -NoiseParams nparams_v6_def_beach = - {0.0, 1.0, v3f(250.0, 250.0, 250.0), 59420, 3, 0.50}; -NoiseParams nparams_v6_def_biome = - {0.0, 1.0, v3f(250.0, 250.0, 250.0), 9130, 3, 0.50}; -NoiseParams nparams_v6_def_cave = - {6.0, 6.0, v3f(250.0, 250.0, 250.0), 34329, 3, 0.50}; - -/////////////////// Mapgen V7 perlin noise default values -NoiseParams nparams_v7_def_terrain = - {10.0, 12.0, v3f(350., 350., 350.), 82341, 5, 0.6}; //terrain -NoiseParams nparams_v7_def_bgroup = - {0.5, 1/(2*1.6), v3f(350., 350., 350.), 5923, 2, 0.60}; //0 to 1 -NoiseParams nparams_v7_def_heat = - {25.0, 50.0, v3f(500., 500., 500.), 35293, 1, 0.00}; //-25 to 75 -NoiseParams nparams_v7_def_humidity = - {50, 100/(2*1.6), v3f(750., 750., 750.), 12094, 2, 0.60}; //0 to 100 - struct MapgenParams { - int seed; - int water_level; + int mg_version; int chunksize; + u64 seed; + int water_level; u32 flags; MapgenParams() { + mg_version = 6; seed = 0; water_level = 1; chunksize = 5; flags = MG_TREES | MG_CAVES | MGV6_BIOME_BLEND; } + static MapgenParams *createMapgenParams(int mgver); + static MapgenParams *getParamsFromSettings(Settings *settings); + }; struct MapgenV6Params : public MapgenParams { @@ -163,6 +153,7 @@ public: int id; virtual void makeChunk(BlockMakeData *data) {}; + virtual int getGroundLevelAtPoint(v2s16 p) = 0; //Legacy functions for Farmesh (pending removal) static bool get_have_beach(u64 seed, v2s16 p2d); @@ -189,7 +180,6 @@ public: Noise *noise_mud; Noise *noise_beach; Noise *noise_biome; - Noise *noise_cave; float *map_terrain_base; float *map_terrain_higher; @@ -199,7 +189,8 @@ public: float *map_mud; float *map_beach; float *map_biome; - float *map_cave; + + NoiseParams *np_cave; u32 flags; float freq_desert; @@ -209,6 +200,7 @@ public: ~MapgenV6(); void makeChunk(BlockMakeData *data); + int getGroundLevelAtPoint(v2s16 p); static s16 find_ground_level(VoxelManipulator &vmanip, v2s16 p2d, INodeDefManager *ndef); @@ -254,12 +246,6 @@ public: int id; u32 flags; -/* - NoiseParams *np_terrain; - NoiseParams *np_bgroup; - NoiseParams *np_heat; - NoiseParams *np_humidity;*/ - //should these be broken off into a "commonly used nodes" class? MapNode n_air; MapNode n_water; @@ -269,6 +255,9 @@ public: ~MapgenV7(); void makeChunk(BlockMakeData *data); + int getGroundLevelAtPoint(v2s16 p); + + Biome *getBiomeAtPoint(v3s16 p); void updateLiquid(v3s16 node_min, v3s16 node_max); void updateLighting(v3s16 node_min, v3s16 node_max); @@ -281,7 +270,6 @@ public: class EmergeManager { public: //settings - int mg_version; MapgenParams *params; //mapgen objects here @@ -290,11 +278,10 @@ public: //biome manager BiomeDefManager *biomedef; - EmergeManager(IGameDef *gamedef, int mg_version=6); + EmergeManager(IGameDef *gamedef, BiomeDefManager *bdef, MapgenParams *mgparams); ~EmergeManager(); Mapgen *getMapgen(); - void setMapgenParams(); void addBlockToQueue(); //mapgen helper methods @@ -304,43 +291,5 @@ public: u32 getBlockSeed(v3s16 p); }; - -/* -namespace mapgen -{ - // Finds precise ground level at any position - s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision); - - // Find out if block is completely underground - bool block_is_underground(u64 seed, v3s16 blockpos); - - // Get a pseudorandom seed for a position on the map - u32 get_blockseed(u64 seed, v3s16 p); - - // Main map generation routine - void make_block(BlockMakeData *data); - - - //These are used by FarMesh - bool get_have_beach(u64 seed, v2s16 p2d); - double tree_amount_2d(u64 seed, v2s16 p); - - struct BlockMakeData - { - bool no_op; - ManualMapVoxelManipulator *vmanip; // Destructor deletes - u64 seed; - v3s16 blockpos_min; - v3s16 blockpos_max; - v3s16 blockpos_requested; - UniqueQueue<v3s16> transforming_liquid; - INodeDefManager *nodedef; - - BlockMakeData(); - ~BlockMakeData(); - }; - -}; // namespace mapgen -*/ #endif |