/*
-Minetest-c55
-Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
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
#include "gamedef.h"
#include "util/directiontables.h"
#include "rollback_interface.h"
+#include "emerge.h"
+#include "mapgen_v6.h"
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
/*
ServerMap
*/
-
ServerMap::ServerMap(std::string savedir, IGameDef *gamedef, EmergeManager *emerge):
Map(dout_server, gamedef),
m_seed(0),
verbosestream<<__FUNCTION_NAME<<std::endl;
m_emerge = emerge;
-
- //m_chunksize = 8; // Takes a few seconds
+ 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));
- }
- else
- {
- m_seed = g_settings->getU64("fixed_map_seed");
+ m_seed = (((u64)(myrand() & 0xffff) << 0)
+ | ((u64)(myrand() & 0xffff) << 16)
+ | ((u64)(myrand() & 0xffff) << 32)
+ | ((u64)(myrand() & 0xffff) << 48));
+ m_mgparams->seed = m_seed;
}
- emerge->seed = m_seed;
- emerge->water_level = g_settings->getS16("default_water_level");
- //mapgen version
- //chunksize
- //noiseparams
/*
Experimental and debug stuff
// Load map metadata (seed, chunksize)
loadMapMeta();
}
+ catch(SettingNotFoundException &e){
+ infostream<<"ServerMap: Some metadata not found."
+ <<" Using default settings."<<std::endl;
+ }
catch(FileNotGoodException &e){
infostream<<"WARNING: Could not load map metadata"
//<<" Disabling chunk-based generator."
}
Settings params;
- params.setU64("seed", m_seed);
- params.setS16("water_level", m_emerge->water_level);
+ m_emerge->setParamsToSettings(¶ms);
params.writeLines(os);
os<<"[end_of_params]\n";
params.parseConfigLine(line);
}
- m_seed = params.getU64("seed");
- m_emerge->seed = m_seed;
- m_emerge->water_level = params.getS16("water_level");
- //m_emerge->np = ;
+ MapgenParams *mgparams = m_emerge->getParamsFromSettings(¶ms);
+ if (mgparams) {
+ if (m_mgparams)
+ delete m_mgparams;
+ m_mgparams = mgparams;
+ m_seed = mgparams->seed;
+ } else {
+ if (params.exists("seed")) {
+ m_seed = params.getU64("seed");
+ m_mgparams->seed = m_seed;
+ }
+ }
verbosestream<<"ServerMap::loadMapMeta(): "<<"seed="<<m_seed<<std::endl;
}