]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/map.cpp
Remove blank default values for emergequeue_limit_* settings
[dragonfireclient.git] / src / map.cpp
index 55f91c8a6117f8b982e40c9ba6aa4c36750c9883..075649f94966cf2821579be45d14857c784bc70d 100644 (file)
@@ -2407,34 +2407,11 @@ s16 Map::getHumidity(v3s16 p)
 */
 ServerMap::ServerMap(std::string savedir, IGameDef *gamedef, EmergeManager *emerge):
        Map(dout_server, gamedef),
-       m_seed(0),
+       m_emerge(emerge),
        m_map_metadata_changed(true)
 {
        verbosestream<<__FUNCTION_NAME<<std::endl;
 
-       m_emerge = emerge;
-       m_mgparams = m_emerge->getParamsFromSettings(g_settings);
-       if (!m_mgparams)
-               m_mgparams = new MapgenV6Params();
-
-       m_seed = m_mgparams->seed;
-
-       if (g_settings->get("fixed_map_seed").empty())
-       {
-               m_seed = (((u64)(myrand() & 0xffff) << 0)
-                               | ((u64)(myrand() & 0xffff) << 16)
-                               | ((u64)(myrand() & 0xffff) << 32)
-                               | ((u64)(myrand() & 0xffff) << 48));
-               m_mgparams->seed = m_seed;
-       }
-
-       /*
-               Experimental and debug stuff
-       */
-
-       {
-       }
-
        /*
                Try to load map; if not found, create a new one.
        */
@@ -2496,7 +2473,7 @@ ServerMap::ServerMap(std::string savedir, IGameDef *gamedef, EmergeManager *emer
                                infostream<<"ServerMap: Successfully loaded map "
                                                <<"metadata from "<<savedir
                                                <<", assuming valid save directory."
-                                               <<" seed="<<m_seed<<"."
+                                               <<" seed="<< m_emerge->params.seed <<"."
                                                <<std::endl;
 
                                m_map_saving_enabled = true;
@@ -2552,7 +2529,7 @@ ServerMap::~ServerMap()
        /*
                Close database if it was opened
        */
-       delete(dbase);
+       delete dbase;
 
 #if 0
        /*
@@ -2565,8 +2542,16 @@ ServerMap::~ServerMap()
                delete chunk;
        }
 #endif
+}
+
+u64 ServerMap::getSeed()
+{
+       return m_emerge->params.seed;
+}
 
-       delete m_mgparams;
+s16 ServerMap::getWaterLevel()
+{
+       return m_emerge->params.water_level;
 }
 
 bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)
@@ -2574,7 +2559,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)
        bool enable_mapgen_debug_info = m_emerge->mapgen_debug_info;
        EMERGE_DBG_OUT("initBlockMake(): " PP(blockpos) " - " PP(blockpos));
 
-       s16 chunksize = m_mgparams->chunksize;
+       s16 chunksize = m_emerge->params.chunksize;
        s16 coffset = -chunksize / 2;
        v3s16 chunk_offset(coffset, coffset, coffset);
        v3s16 blockpos_div = getContainerPos(blockpos - chunk_offset, chunksize);
@@ -2590,7 +2575,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)
                blockpos_over_limit(blockpos_max + extra_borders))
                return false;
 
-       data->seed = m_seed;
+       data->seed = m_emerge->params.seed;
        data->blockpos_min = blockpos_min;
        data->blockpos_max = blockpos_max;
        data->blockpos_requested = blockpos;
@@ -3185,56 +3170,48 @@ void ServerMap::prepareBlock(MapBlock *block) {
        }
 }
 
-/**
- * Get the ground level by searching for a non CONTENT_AIR node in a column from top to bottom
- */
-s16 ServerMap::findGroundLevel(v2s16 p2d, bool cacheBlocks)
+s16 ServerMap::findGroundLevel(v2s16 p2d)
 {
-       
-       s16 level;
-
-       // The reference height is the original mapgen height
-       s16 referenceHeight = m_emerge->getGroundLevelAtPoint(p2d);
-       s16 maxSearchHeight =  63 + referenceHeight;
-       s16 minSearchHeight = -63 + referenceHeight;
-       v3s16 probePosition(p2d.X, maxSearchHeight, p2d.Y);
-       v3s16 blockPosition = getNodeBlockPos(probePosition);
-       v3s16 prevBlockPosition = blockPosition;
-
-       // Cache the block to be inspected.
-       if(cacheBlocks) {
-               emergeBlock(blockPosition, true);
-       }
-
-       // Probes the nodes in the given column
-       for(; probePosition.Y > minSearchHeight; probePosition.Y--)
+#if 0
+       /*
+               Uh, just do something random...
+       */
+       // Find existing map from top to down
+       s16 max=63;
+       s16 min=-64;
+       v3s16 p(p2d.X, max, p2d.Y);
+       for(; p.Y>min; p.Y--)
        {
-               if(cacheBlocks) {
-                       // Calculate the block position of the given node
-                       blockPosition = getNodeBlockPos(probePosition); 
-
-                       // If the node is in an different block, cache it
-                       if(blockPosition != prevBlockPosition) {
-                               emergeBlock(blockPosition, true);
-                               prevBlockPosition = blockPosition;
-                       }
-               }
-
-               MapNode node = getNodeNoEx(probePosition);
-               if (node.getContent() != CONTENT_IGNORE &&
-                   node.getContent() != CONTENT_AIR) {
+               MapNode n = getNodeNoEx(p);
+               if(n.getContent() != CONTENT_IGNORE)
                        break;
-               }
        }
-
-       // Could not determine the ground. Use map generator noise functions.
-       if(probePosition.Y == minSearchHeight) {
-               level = referenceHeight; 
-       } else {
-               level = probePosition.Y;
+       if(p.Y == min)
+               goto plan_b;
+       // If this node is not air, go to plan b
+       if(getNodeNoEx(p).getContent() != CONTENT_AIR)
+               goto plan_b;
+       // Search existing walkable and return it
+       for(; p.Y>min; p.Y--)
+       {
+               MapNode n = getNodeNoEx(p);
+               if(content_walkable(n.d) && n.getContent() != CONTENT_IGNORE)
+                       return p.Y;
        }
 
+       // Move to plan b
+plan_b:
+#endif
+
+       /*
+               Determine from map generator noise functions
+       */
+
+       s16 level = m_emerge->getGroundLevelAtPoint(p2d);
        return level;
+
+       //double level = base_rock_level_2d(m_seed, p2d) + AVERAGE_MUD_AMOUNT;
+       //return (s16)level;
 }
 
 bool ServerMap::loadFromFolders() {
@@ -3459,7 +3436,7 @@ void ServerMap::saveMapMeta()
 
        Settings params;
 
-       m_emerge->setParamsToSettings(&params);
+       m_emerge->saveParamsToSettings(&params);
        params.writeLines(ss);
 
        ss<<"[end_of_params]\n";
@@ -3505,28 +3482,10 @@ void ServerMap::loadMapMeta()
                params.parseConfigLine(line);
        }
        
-       MapgenParams *mgparams;
-       try {
-               mgparams = m_emerge->getParamsFromSettings(&params);
-       } catch (SettingNotFoundException &e) {
-               infostream << "Couldn't get a setting from map_meta.txt: "
-                                  << e.what() << std::endl;
-               mgparams = NULL;
-       }
-       
-       if (mgparams) {
-               if (m_mgparams)
-                       delete m_mgparams;
-               m_mgparams = mgparams;
-               m_seed = mgparams->seed;
-       } else {
-               if (params.exists("seed")) {
-                       m_seed = read_seed(params.get("seed").c_str());
-                       m_mgparams->seed = m_seed;
-               }
-       }
+       m_emerge->loadParamsFromSettings(&params);
 
-       verbosestream<<"ServerMap::loadMapMeta(): "<<"seed="<<m_seed<<std::endl;
+       verbosestream<<"ServerMap::loadMapMeta(): seed="
+               << m_emerge->params.seed<<std::endl;
 }
 
 void ServerMap::saveSectorMeta(ServerMapSector *sector)
@@ -3948,7 +3907,7 @@ s16 ServerMap::updateBlockHeat(ServerEnvironment *env, v3s16 p, MapBlock *block)
                block = getBlockNoCreateNoEx(getNodeBlockPos(p));
        }
 
-       f32 heat = m_emerge->biomedef->calcBlockHeat(p, m_seed,
+       f32 heat = m_emerge->biomedef->calcBlockHeat(p, getSeed(),
                        env->getTimeOfDayF(), gametime * env->getTimeOfDaySpeed());
 
        if(block) {
@@ -3969,7 +3928,7 @@ s16 ServerMap::updateBlockHumidity(ServerEnvironment *env, v3s16 p, MapBlock *bl
                block = getBlockNoCreateNoEx(getNodeBlockPos(p));
        }
 
-       f32 humidity = m_emerge->biomedef->calcBlockHumidity(p, m_seed,
+       f32 humidity = m_emerge->biomedef->calcBlockHumidity(p, getSeed(),
                        env->getTimeOfDayF(), gametime * env->getTimeOfDaySpeed());
                        
        if(block) {