]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/map.cpp
Remove blank default values for emergequeue_limit_* settings
[dragonfireclient.git] / src / map.cpp
index 0f9c82c3cc1f00b8ff3d4b602aad91339402cd96..075649f94966cf2821579be45d14857c784bc70d 100644 (file)
@@ -75,8 +75,6 @@ Map::Map(std::ostream &dout, IGameDef *gamedef):
        m_gamedef(gamedef),
        m_sector_cache(NULL)
 {
-       /*m_sector_mutex.Init();
-       assert(m_sector_mutex.IsInitialized());*/
 }
 
 Map::~Map()
@@ -931,7 +929,8 @@ void Map::updateLighting(std::map<v3s16, MapBlock*> & a_blocks,
 /*
 */
 void Map::addNodeAndUpdate(v3s16 p, MapNode n,
-               std::map<v3s16, MapBlock*> &modified_blocks)
+               std::map<v3s16, MapBlock*> &modified_blocks,
+               bool remove_metadata)
 {
        INodeDefManager *ndef = m_gamedef->ndef();
 
@@ -1018,8 +1017,9 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n,
        /*
                Remove node metadata
        */
-
-       removeNodeMetadata(p);
+       if (remove_metadata) {
+               removeNodeMetadata(p);
+       }
 
        /*
                Set the node on the map
@@ -1319,17 +1319,17 @@ void Map::removeNodeAndUpdate(v3s16 p,
        }
 }
 
-bool Map::addNodeWithEvent(v3s16 p, MapNode n)
+bool Map::addNodeWithEvent(v3s16 p, MapNode n, bool remove_metadata)
 {
        MapEditEvent event;
-       event.type = MEET_ADDNODE;
+       event.type = remove_metadata ? MEET_ADDNODE : MEET_SWAPNODE;
        event.p = p;
        event.n = n;
 
        bool succeeded = true;
        try{
                std::map<v3s16, MapBlock*> modified_blocks;
-               addNodeAndUpdate(p, n, modified_blocks);
+               addNodeAndUpdate(p, n, modified_blocks, remove_metadata);
 
                // Copy modified_blocks to event
                for(std::map<v3s16, MapBlock*>::iterator
@@ -1679,7 +1679,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
                v3s16 p0 = m_transforming_liquid.pop_front();
                u16 total_level = 0;
                // surrounding flowing liquid nodes
-               NodeNeighbor neighbors[7]; 
+               NodeNeighbor neighbors[7];
                // current level of every block
                s8 liquid_levels[7] = {-1, -1, -1, -1, -1, -1, -1};
                 // target levels
@@ -1780,8 +1780,8 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
                        liquid_levels[D_BOTTOM] == LIQUID_LEVEL_SOURCE &&
                        total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level-
                        (can_liquid_same_level - relax) &&
-                       can_liquid_same_level >= relax + 1) { 
-                       total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level; 
+                       can_liquid_same_level >= relax + 1) {
+                       total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level;
                }
 
                // prevent lakes in air above unloaded blocks
@@ -1790,9 +1790,9 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
                }
 
                // calculate self level 5 blocks
-               u8 want_level = 
+               u8 want_level =
                          total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level
-                       ? LIQUID_LEVEL_SOURCE 
+                       ? LIQUID_LEVEL_SOURCE
                        : total_level / can_liquid_same_level;
                total_level -= want_level * can_liquid_same_level;
 
@@ -1850,7 +1850,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
 
                /*
                if (total_level > 0) //|| flowed != volume)
-                       infostream <<" AFTER level=" << (int)total_level 
+                       infostream <<" AFTER level=" << (int)total_level
                        //<< " flowed="<<flowed<< " volume=" << volume
                        << " wantsame="<<(int)want_level<< " top="
                        << (int)liquid_levels_want[D_TOP]<< " topwas="
@@ -1860,7 +1860,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
 
                //u8 changed = 0;
                for (u16 i = 0; i < 7; i++) {
-                       if (liquid_levels_want[i] < 0 || !neighbors[i].l) 
+                       if (liquid_levels_want[i] < 0 || !neighbors[i].l)
                                continue;
                        MapNode & n0 = neighbors[i].n;
                        p0 = neighbors[i].p;
@@ -1907,7 +1907,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
                         */
                        /*
                        if (
-                                new_node_content == n0.getContent() 
+                                new_node_content == n0.getContent()
                                && (nodemgr->get(n0.getContent()).liquid_type != LIQUID_FLOWING ||
                                 (n0.getLevel(nodemgr) == (u8)new_node_level
                                 //&& ((n0.param2 & LIQUID_FLOW_DOWN_MASK) ==
@@ -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
+}
 
-       delete m_mgparams;
+u64 ServerMap::getSeed()
+{
+       return m_emerge->params.seed;
+}
+
+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;
@@ -3451,7 +3436,7 @@ void ServerMap::saveMapMeta()
 
        Settings params;
 
-       m_emerge->setParamsToSettings(&params);
+       m_emerge->saveParamsToSettings(&params);
        params.writeLines(ss);
 
        ss<<"[end_of_params]\n";
@@ -3497,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)
@@ -3940,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) {
@@ -3961,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) {