Tooltips: Unify the tooltip[] and list[] description tooltip display functions (...
[oweals/minetest.git] / src / mapgen_v7.cpp
index c9b6b48e097d3f8a045374bbf282e67c5a6c03ad..5e9bc4aa39d1d16213db4f7d9f5d8c465ed6fc8a 100644 (file)
@@ -1,7 +1,7 @@
 /*
 Minetest
-Copyright (C) 2010-2015 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
-Copyright (C) 2010-2015 paramat, Matt Gregory
+Copyright (C) 2013-2016 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
+Copyright (C) 2014-2017 paramat
 
 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
@@ -64,22 +64,30 @@ MapgenV7::MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge)
        this->cavern_taper        = params->cavern_taper;
        this->cavern_threshold    = params->cavern_threshold;
 
-       //// Terrain noise
-       noise_terrain_base      = new Noise(&params->np_terrain_base,      seed, csize.X, csize.Z);
-       noise_terrain_alt       = new Noise(&params->np_terrain_alt,       seed, csize.X, csize.Z);
-       noise_terrain_persist   = new Noise(&params->np_terrain_persist,   seed, csize.X, csize.Z);
-       noise_height_select     = new Noise(&params->np_height_select,     seed, csize.X, csize.Z);
-       noise_filler_depth      = new Noise(&params->np_filler_depth,      seed, csize.X, csize.Z);
-       noise_mount_height      = new Noise(&params->np_mount_height,      seed, csize.X, csize.Z);
-       noise_ridge_uwater      = new Noise(&params->np_ridge_uwater,      seed, csize.X, csize.Z);
-       noise_floatland_base    = new Noise(&params->np_floatland_base,    seed, csize.X, csize.Z);
-       noise_float_base_height = new Noise(&params->np_float_base_height, seed, csize.X, csize.Z);
-
-       //// 3d terrain noise
-       // 1-up 1-down overgeneration
-       noise_mountain = new Noise(&params->np_mountain, seed, csize.X, csize.Y + 2, csize.Z);
-       noise_ridge    = new Noise(&params->np_ridge,    seed, csize.X, csize.Y + 2, csize.Z);
-       // 1 down overgeneration
+       // 2D noise
+       noise_terrain_base    = new Noise(&params->np_terrain_base,    seed, csize.X, csize.Z);
+       noise_terrain_alt     = new Noise(&params->np_terrain_alt,     seed, csize.X, csize.Z);
+       noise_terrain_persist = new Noise(&params->np_terrain_persist, seed, csize.X, csize.Z);
+       noise_height_select   = new Noise(&params->np_height_select,   seed, csize.X, csize.Z);
+       noise_filler_depth    = new Noise(&params->np_filler_depth,    seed, csize.X, csize.Z);
+
+       if (spflags & MGV7_MOUNTAINS)
+               noise_mount_height = new Noise(&params->np_mount_height, seed, csize.X, csize.Z);
+
+       if (spflags & MGV7_FLOATLANDS) {
+               noise_floatland_base    = new Noise(&params->np_floatland_base,    seed, csize.X, csize.Z);
+               noise_float_base_height = new Noise(&params->np_float_base_height, seed, csize.X, csize.Z);
+       }
+
+       if (spflags & MGV7_RIDGES) {
+               noise_ridge_uwater = new Noise(&params->np_ridge_uwater, seed, csize.X, csize.Z);
+       // 3D noise, 1-up 1-down overgeneration
+               noise_ridge = new Noise(&params->np_ridge, seed, csize.X, csize.Y + 2, csize.Z);
+       }
+       // 3D noise, 1 up, 1 down overgeneration
+       if ((spflags & MGV7_MOUNTAINS) || (spflags & MGV7_FLOATLANDS))
+               noise_mountain = new Noise(&params->np_mountain, seed, csize.X, csize.Y + 2, csize.Z);
+       // 3D noise, 1 down overgeneration
        MapgenBasic::np_cave1  = params->np_cave1;
        MapgenBasic::np_cave2  = params->np_cave2;
        MapgenBasic::np_cavern = params->np_cavern;
@@ -89,16 +97,26 @@ MapgenV7::MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge)
 MapgenV7::~MapgenV7()
 {
        delete noise_terrain_base;
+       delete noise_terrain_alt;
        delete noise_terrain_persist;
        delete noise_height_select;
-       delete noise_terrain_alt;
        delete noise_filler_depth;
-       delete noise_mount_height;
-       delete noise_ridge_uwater;
-       delete noise_floatland_base;
-       delete noise_float_base_height;
-       delete noise_mountain;
-       delete noise_ridge;
+
+       if (spflags & MGV7_MOUNTAINS)
+               delete noise_mount_height;
+
+       if (spflags & MGV7_FLOATLANDS) {
+               delete noise_floatland_base;
+               delete noise_float_base_height;
+       }
+
+       if (spflags & MGV7_RIDGES) {
+               delete noise_ridge_uwater;
+               delete noise_ridge;
+       }
+
+       if ((spflags & MGV7_MOUNTAINS) || (spflags & MGV7_FLOATLANDS))
+               delete noise_mountain;
 }
 
 
@@ -274,12 +292,12 @@ void MapgenV7::makeChunk(BlockMakeData *data)
 
        // Generate caverns, tunnels and classic caves
        if (flags & MG_CAVES) {
-               bool has_cavern = false;
+               bool near_cavern = false;
                // Generate caverns
                if (spflags & MGV7_CAVERNS)
-                       has_cavern = generateCaverns(stone_surface_max_y);
+                       near_cavern = generateCaverns(stone_surface_max_y);
                // Generate tunnels and classic caves
-               if (has_cavern)
+               if (near_cavern)
                        // Disable classic caves in this mapchunk by setting
                        // 'large cave depth' to world base. Avoids excessive liquid in
                        // large caverns and floating blobs of overgenerated liquid.