]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapgen_indev.h
Made unknown nodes stop falling nodes properly and shorten lines
[dragonfireclient.git] / src / mapgen_indev.h
index ef6193c122c48804e110586b73c340bb09592c06..cfef590412346f39038a4dc8010dfafa9a473be8 100644 (file)
@@ -22,43 +22,51 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "mapgen.h"
 #include "mapgen_v6.h"
+#include "cavegen.h"
 
+float farscale(float scale, float z);
+float farscale(float scale, float x, float z);
 float farscale(float scale, float x, float y, float z);
 
 struct NoiseIndevParams : public NoiseParams {
        float farscale;
+       float farspread;
 
-       NoiseIndevParams(){}
-       NoiseIndevParams(float offset_, float scale_, v3f spread_, int seed_, int octaves_, float persist_, float farscale_) 
-           //:NoiseParams(offset_, scale_, spread_, seed_, octaves_,  persist_)
+       NoiseIndevParams() {}
+       NoiseIndevParams(float offset_, float scale_, v3f spread_,
+                                        int seed_, int octaves_, float persist_,
+                                         float farscale_ = 1, float farspread_ = 1)
        {
-       //NoiseParams(float offset_, float scale_, v3f spread_, int seed_, int octaves_, float persist_) {
-               offset = offset_;
-               scale = scale_;
-               spread = spread_;
-               seed = seed_;
+               offset  = offset_;
+               scale   = scale_;
+               spread  = spread_;
+               seed    = seed_;
                octaves = octaves_;
                persist = persist_;
-       //}
-               farscale = farscale_;
-       }
 
+               farscale  = farscale_;
+               farspread = farspread_;
+       }
+       
+       ~NoiseIndevParams() {}
 };
 
-#define getNoiseIndevParams(x) getStruct<NoiseIndevParams>((x), "f,f,v3,s32,s32,f,f")
-#define setNoiseIndevParams(x, y) setStruct((x), "f,f,v3,s32,s32,f,f", (y))
+#define getNoiseIndevParams(x, y) getStruct((x), "f,f,v3,s32,s32,f,f,f", &(y), sizeof(y))
+#define setNoiseIndevParams(x, y) setStruct((x), "f,f,v3,s32,s32,f,f,f", &(y))
 
 class NoiseIndev : public Noise {
-    public:
+public:
        NoiseIndevParams *npindev;
 
-       //NoiseIndev() {};
+       virtual ~NoiseIndev() {};
        NoiseIndev(NoiseIndevParams *np, int seed, int sx, int sy);
        NoiseIndev(NoiseIndevParams *np, int seed, int sx, int sy, int sz);
        void init(NoiseIndevParams *np, int seed, int sx, int sy, int sz);
        void transformNoiseMapFarScale(float xx = 0, float yy = 0, float zz = 0);
 };
 
+extern NoiseIndevParams nparams_indev_def;
+/*
 extern NoiseIndevParams nparams_indev_def_terrain_base;
 extern NoiseIndevParams nparams_indev_def_terrain_higher;
 extern NoiseIndevParams nparams_indev_def_steepness;
@@ -66,33 +74,41 @@ extern NoiseIndevParams nparams_indev_def_steepness;
 //extern NoiseIndevParams nparams_indev_def_trees;
 extern NoiseIndevParams nparams_indev_def_mud;
 //extern NoiseIndevParams nparams_indev_def_beach;
-//extern NoiseIndevParams nparams_indev_def_biome;
+extern NoiseIndevParams nparams_indev_def_biome;
 //extern NoiseIndevParams nparams_indev_def_cave;
-
+extern NoiseIndevParams nparams_indev_def_float_islands;
+*/
 
 struct MapgenIndevParams : public MapgenV6Params {
-       NoiseIndevParams *npindev_terrain_base;
-       NoiseIndevParams *npindev_terrain_higher;
-       NoiseIndevParams *npindev_steepness;
+       NoiseIndevParams npindev_terrain_base;
+       NoiseIndevParams npindev_terrain_higher;
+       NoiseIndevParams npindev_steepness;
        //NoiseParams *np_height_select;
        //NoiseParams *np_trees;
-       NoiseIndevParams *npindev_mud;
+       NoiseIndevParams npindev_mud;
        //NoiseParams *np_beach;
-       //NoiseParams *np_biome;
+       NoiseIndevParams npindev_biome;
        //NoiseParams *np_cave;
+       NoiseIndevParams npindev_float_islands1;
+       NoiseIndevParams npindev_float_islands2;
+       NoiseIndevParams npindev_float_islands3;
 
        MapgenIndevParams() {
                //freq_desert       = 0.45;
                //freq_beach        = 0.15;
-               npindev_terrain_base   = &nparams_indev_def_terrain_base;
-               npindev_terrain_higher = &nparams_indev_def_terrain_higher;
-               npindev_steepness      = &nparams_indev_def_steepness;
+               npindev_terrain_base   = nparams_indev_def; //&nparams_indev_def_terrain_base;
+               npindev_terrain_higher = nparams_indev_def; //&nparams_indev_def_terrain_higher;
+               npindev_steepness      = nparams_indev_def; //&nparams_indev_def_steepness;
                //np_height_select  = &nparams_v6_def_height_select;
                //np_trees          = &nparams_v6_def_trees;
-               npindev_mud            = &nparams_indev_def_mud;
+               npindev_mud            = nparams_indev_def; //&nparams_indev_def_mud;
                //np_beach          = &nparams_v6_def_beach;
-               //np_biome          = &nparams_v6_def_biome;
+               npindev_biome          = nparams_indev_def; //&nparams_indev_def_biome;
                //np_cave           = &nparams_v6_def_cave;
+               npindev_float_islands1  = nparams_indev_def; //&nparams_indev_def_float_islands;
+               npindev_float_islands2  = nparams_indev_def; //&nparams_indev_def_float_islands;
+               npindev_float_islands3  = nparams_indev_def; //&nparams_indev_def_float_islands;
+
        }
 
        bool readParams(Settings *settings);
@@ -108,22 +124,29 @@ class MapgenIndev : public MapgenV6 {
        //NoiseIndev *noise_trees;
        NoiseIndev *noiseindev_mud;
        //NoiseIndev *noise_beach;
-       //NoiseIndev *noise_biome;
+       NoiseIndev *noiseindev_biome;
        //NoiseIndevParams *np_cave;
+       NoiseIndev *noiseindev_float_islands1;
+       NoiseIndev *noiseindev_float_islands2;
+       NoiseIndev *noiseindev_float_islands3;
 
-       MapgenIndev(int mapgenid, MapgenIndevParams *params);
+       MapgenIndev(int mapgenid, MapgenIndevParams *params, EmergeManager *emerge);
        ~MapgenIndev();
        void calculateNoise();
 
        float baseTerrainLevelFromNoise(v2s16 p);
        float baseTerrainLevelFromMap(int index);
        float getMudAmount(int index);
-       void defineCave(Cave & cave, PseudoRandom ps, v3s16 node_min, bool large_cave);
+       void generateCaves(int max_stone_y);
+       //void defineCave(Cave & cave, PseudoRandom ps, v3s16 node_min, bool large_cave);
+       void generateExperimental();
+       
+       void generateFloatIslands(int min_y);
 };
 
 struct MapgenFactoryIndev : public MapgenFactoryV6 {
        Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) {
-               return new MapgenIndev(mgid, (MapgenIndevParams *)params);
+               return new MapgenIndev(mgid, (MapgenIndevParams *)params, emerge);
        };
 
        MapgenParams *createMapgenParams() {
@@ -131,5 +154,10 @@ struct MapgenFactoryIndev : public MapgenFactoryV6 {
        };
 };
 
+class CaveIndev : public CaveV6 {
+public:
+       CaveIndev(MapgenIndev *mg, PseudoRandom *ps, PseudoRandom *ps2,
+                       v3s16 node_min, bool is_large_cave);
+};
 
 #endif