Fix i18n of some strings.
[oweals/minetest.git] / src / mapgen_v6.cpp
index d90d142d50ed75d911c1c686ba356a7656934809..7643f3a48920ce4d187294ac7c52fcd62eba9b95 100644 (file)
@@ -79,19 +79,19 @@ MapgenV6::MapgenV6(int mapgenid, MapgenV6Params *params, EmergeManager *emerge)
        this->freq_beach  = params->freq_beach;
 
        this->ystride = csize.X; //////fix this
-
-       np_cave        = params->np_cave;
-       np_humidity    = params->np_humidity;
-       np_trees       = params->np_trees;
-       np_apple_trees = params->np_apple_trees;
-
-       noise_terrain_base   = new Noise(params->np_terrain_base,   seed, csize.X, csize.Y);
-       noise_terrain_higher = new Noise(params->np_terrain_higher, seed, csize.X, csize.Y);
-       noise_steepness      = new Noise(params->np_steepness,      seed, csize.X, csize.Y);
-       noise_height_select  = new Noise(params->np_height_select,  seed, csize.X, csize.Y);
-       noise_mud            = new Noise(params->np_mud,            seed, csize.X, csize.Y);
-       noise_beach          = new Noise(params->np_beach,          seed, csize.X, csize.Y);
-       noise_biome          = new Noise(params->np_biome,          seed, csize.X, csize.Y);
+       
+       np_cave        = &params->np_cave;
+       np_humidity    = &params->np_humidity;
+       np_trees       = &params->np_trees;
+       np_apple_trees = &params->np_apple_trees;
+
+       noise_terrain_base   = new Noise(&params->np_terrain_base,   seed, csize.X, csize.Y);
+       noise_terrain_higher = new Noise(&params->np_terrain_higher, seed, csize.X, csize.Y);
+       noise_steepness      = new Noise(&params->np_steepness,      seed, csize.X, csize.Y);
+       noise_height_select  = new Noise(&params->np_height_select,  seed, csize.X, csize.Y);
+       noise_mud            = new Noise(&params->np_mud,            seed, csize.X, csize.Y);
+       noise_beach          = new Noise(&params->np_beach,          seed, csize.X, csize.Y);
+       noise_biome          = new Noise(&params->np_biome,          seed, csize.X, csize.Y);
 }
 
 
@@ -108,23 +108,6 @@ MapgenV6::~MapgenV6() {
 
 //////////////////////// Some helper functions for the map generator
 
-// Returns Y one under area minimum if not found
-s16 MapgenV6::find_ground_level(v2s16 p2d) {
-       v3s16 em = vm->m_area.getExtent();
-       s16 y_nodes_max = vm->m_area.MaxEdge.Y;
-       s16 y_nodes_min = vm->m_area.MinEdge.Y;
-       u32 i = vm->m_area.index(p2d.X, y_nodes_max, p2d.Y);
-       s16 y;
-       
-       for (y = y_nodes_max; y >= y_nodes_min; y--) {
-               MapNode &n = vm->m_data[i];
-               if(ndef->get(n).walkable)
-                       break;
-
-               vm->m_area.add_y(em, i, -1);
-       }
-       return (y >= y_nodes_min) ? y : y_nodes_min - 1;
-}
 
 // Returns Y one under area minimum if not found
 s16 MapgenV6::find_stone_level(v2s16 p2d) {
@@ -375,8 +358,6 @@ void MapgenV6::makeChunk(BlockMakeData *data) {
        v3s16 blockpos = data->blockpos_requested;
        v3s16 blockpos_min = data->blockpos_min;
        v3s16 blockpos_max = data->blockpos_max;
-       v3s16 blockpos_full_min = blockpos_min - v3s16(1,1,1);
-       v3s16 blockpos_full_max = blockpos_max + v3s16(1,1,1);
 
        // Area of central chunk
        node_min = blockpos_min*MAP_BLOCKSIZE;
@@ -464,6 +445,12 @@ void MapgenV6::makeChunk(BlockMakeData *data) {
        // Generate some trees, and add grass, if a jungle
        if (flags & MG_TREES)
                placeTreesAndJungleGrass();
+       
+       // Generate the registered decorations
+       for (unsigned int i = 0; i != emerge->decorations.size(); i++) {
+               Decoration *deco = emerge->decorations[i];
+               deco->placeDeco(this, blockseed + i, node_min, node_max);
+       }
 
        // Generate the registered ores
        for (unsigned int i = 0; i != emerge->ores.size(); i++) {
@@ -472,8 +459,9 @@ void MapgenV6::makeChunk(BlockMakeData *data) {
        }
 
        // Calculate lighting
-       calcLighting(node_min - v3s16(1, 1, 1) * MAP_BLOCKSIZE,
-                                node_max + v3s16(1, 0, 1) * MAP_BLOCKSIZE);
+       if (!(flags & MG_NOLIGHT))
+               calcLighting(node_min - v3s16(1, 1, 1) * MAP_BLOCKSIZE,
+                                        node_max + v3s16(1, 0, 1) * MAP_BLOCKSIZE);
        
        this->generating = false;
 }
@@ -851,7 +839,7 @@ void MapgenV6::placeTreesAndJungleGrass() {
                                s16 x = grassrandom.range(p2d_min.X, p2d_max.X);
                                s16 z = grassrandom.range(p2d_min.Y, p2d_max.Y);
                                
-                               s16 y = find_ground_level(v2s16(x, z)); ////////////////optimize this!
+                               s16 y = findGroundLevelFull(v2s16(x, z)); ////////////////optimize this!
                                if (y < water_level || y < node_min.Y || y > node_max.Y)
                                        continue;
                                
@@ -868,7 +856,7 @@ void MapgenV6::placeTreesAndJungleGrass() {
                for (u32 i = 0; i < tree_count; i++) {
                        s16 x = myrand_range(p2d_min.X, p2d_max.X);
                        s16 z = myrand_range(p2d_min.Y, p2d_max.Y);
-                       s16 y = find_ground_level(v2s16(x, z)); ////////////////////optimize this!
+                       s16 y = findGroundLevelFull(v2s16(x, z)); ////////////////////optimize this!
                        // Don't make a tree under water level
                        // Don't make a tree so high that it doesn't fit
                        if(y < water_level || y > node_max.Y - 6)