]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapgen/mapgen_valleys.cpp
Merge pull request #59 from PrairieAstronomer/readme_irrlicht_change
[dragonfireclient.git] / src / mapgen / mapgen_valleys.cpp
index 413967cbd1e0e74bf1e048ae3e26977a81e5a8a7..80a99b1f0fd728c16d4a905cdeb2dd5f338ae014 100644 (file)
@@ -54,10 +54,11 @@ FlagDesc flagdesc_mapgen_valleys[] = {
 };
 
 
-MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeManager *emerge)
+MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeParams *emerge)
        : MapgenBasic(MAPGEN_VALLEYS, params, emerge)
 {
-       // NOTE: MapgenValleys has a hard dependency on BiomeGenOriginal
+       FATAL_ERROR_IF(biomegen->getType() != BIOMEGEN_ORIGINAL,
+               "MapgenValleys has a hard dependency on BiomeGenOriginal");
        m_bgen = (BiomeGenOriginal *)biomegen;
 
        spflags            = params->spflags;
@@ -67,7 +68,6 @@ MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeManager *emerge)
 
        cave_width         = params->cave_width;
        large_cave_depth   = params->large_cave_depth;
-       lava_depth         = params->lava_depth;
        small_cave_num_min = params->small_cave_num_min;
        small_cave_num_max = params->small_cave_num_max;
        large_cave_num_min = params->large_cave_num_min;
@@ -132,7 +132,6 @@ void MapgenValleysParams::readParams(const Settings *settings)
        settings->getFlagStrNoEx("mgvalleys_spflags", spflags, flagdesc_mapgen_valleys);
        settings->getU16NoEx("mgvalleys_altitude_chill",       altitude_chill);
        settings->getS16NoEx("mgvalleys_large_cave_depth",     large_cave_depth);
-       settings->getS16NoEx("mgvalleys_lava_depth",           lava_depth);
        settings->getU16NoEx("mgvalleys_small_cave_num_min",   small_cave_num_min);
        settings->getU16NoEx("mgvalleys_small_cave_num_max",   small_cave_num_max);
        settings->getU16NoEx("mgvalleys_large_cave_num_min",   large_cave_num_min);
@@ -164,10 +163,9 @@ void MapgenValleysParams::readParams(const Settings *settings)
 
 void MapgenValleysParams::writeParams(Settings *settings) const
 {
-       settings->setFlagStr("mgvalleys_spflags", spflags, flagdesc_mapgen_valleys, U32_MAX);
+       settings->setFlagStr("mgvalleys_spflags", spflags, flagdesc_mapgen_valleys);
        settings->setU16("mgvalleys_altitude_chill",       altitude_chill);
        settings->setS16("mgvalleys_large_cave_depth",     large_cave_depth);
-       settings->setS16("mgvalleys_lava_depth",           lava_depth);
        settings->setU16("mgvalleys_small_cave_num_min",   small_cave_num_min);
        settings->setU16("mgvalleys_small_cave_num_max",   small_cave_num_max);
        settings->setU16("mgvalleys_large_cave_num_min",   large_cave_num_min);
@@ -197,17 +195,22 @@ void MapgenValleysParams::writeParams(Settings *settings) const
 }
 
 
+void MapgenValleysParams::setDefaultSettings(Settings *settings)
+{
+       settings->setDefault("mgvalleys_spflags", flagdesc_mapgen_valleys,
+               MGVALLEYS_ALT_CHILL | MGVALLEYS_HUMID_RIVERS |
+               MGVALLEYS_VARY_RIVER_DEPTH | MGVALLEYS_ALT_DRY);
+}
+
+
+/////////////////////////////////////////////////////////////////
+
+
 void MapgenValleys::makeChunk(BlockMakeData *data)
 {
        // Pre-conditions
        assert(data->vmanip);
        assert(data->nodedef);
-       assert(data->blockpos_requested.X >= data->blockpos_min.X &&
-               data->blockpos_requested.Y >= data->blockpos_min.Y &&
-               data->blockpos_requested.Z >= data->blockpos_min.Z);
-       assert(data->blockpos_requested.X <= data->blockpos_max.X &&
-               data->blockpos_requested.Y <= data->blockpos_max.Y &&
-               data->blockpos_requested.Z <= data->blockpos_max.Z);
 
        //TimeTaker t("makeChunk");
 
@@ -260,11 +263,11 @@ void MapgenValleys::makeChunk(BlockMakeData *data)
        }
 
        // Generate the registered ores
-       m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);
+       if (flags & MG_ORES)
+               m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);
 
        // Dungeon creation
-       if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
-                       full_node_max.Y <= dungeon_ymax)
+       if (flags & MG_DUNGEONS)
                generateDungeons(stone_surface_max_y);
 
        // Generate the registered decorations
@@ -383,7 +386,7 @@ int MapgenValleys::generateTerrain()
 
                // Rivers are placed where 'river' is negative
                if (river < 0.0f) {
-                       // Use the the function -sqrt(1-x^2) which models a circle
+                       // Use the function -sqrt(1-x^2) which models a circle
                        float tr = river / river_size_factor + 1.0f;
                        float depth = (river_depth_bed *
                                std::sqrt(std::fmax(0.0f, 1.0f - tr * tr)));