aboutsummaryrefslogtreecommitdiff
path: root/src/mapgen.h
diff options
context:
space:
mode:
authorkwolekr <mirrorisim@gmail.com>2013-01-06 14:40:24 -0500
committerPerttu Ahola <celeron55@gmail.com>2013-01-21 21:41:37 +0200
commit631a835e0782a2696762e3d55f75616f5a063394 (patch)
tree5f344ae788a50eb023e5d9fb92ed9478256c8f46 /src/mapgen.h
parent45cf32afc5554d76f7f48268a8cab5a051638761 (diff)
downloadminetest-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.h129
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