-MapgenParams *EmergeManager::getParamsFromSettings(Settings *settings) {
- std::string mg_name = settings->get("mg_name");
- MapgenParams *mgparams = createMapgenParams(mg_name);
- if (!mgparams)
- return NULL;
-
- std::string seedstr = settings->get(settings == g_settings ?
- "fixed_map_seed" : "seed");
-
- mgparams->mg_name = mg_name;
- mgparams->seed = read_seed(seedstr.c_str());
- mgparams->water_level = settings->getS16("water_level");
- mgparams->chunksize = settings->getS16("chunksize");
- mgparams->flags = settings->getFlagStr("mg_flags", flagdesc_mapgen);
-
- if (!mgparams->readParams(settings)) {
- delete mgparams;
- return NULL;
- }
- return mgparams;
-}
-
-
-void EmergeManager::setParamsToSettings(Settings *settings) {
- settings->set("mg_name", params->mg_name);
- settings->setU64("seed", params->seed);
- settings->setS16("water_level", params->water_level);
- settings->setS16("chunksize", params->chunksize);
- settings->setFlagStr("mg_flags", params->flags, flagdesc_mapgen);
-
- params->writeParams(settings);
+void EmergeManager::loadParamsFromSettings(Settings *settings)
+{
+ std::string seed_str;
+ const char *setname = (settings == g_settings) ? "fixed_map_seed" : "seed";
+
+ if (settings->getNoEx(setname, seed_str))
+ params.seed = read_seed(seed_str.c_str());
+
+ settings->getNoEx("mg_name", params.mg_name);
+ settings->getS16NoEx("water_level", params.water_level);
+ settings->getS16NoEx("chunksize", params.chunksize);
+ settings->getFlagStrNoEx("mg_flags", params.flags, flagdesc_mapgen);
+ settings->getNoiseParams("mg_biome_np_heat", params.np_biome_heat);
+ settings->getNoiseParams("mg_biome_np_humidity", params.np_biome_humidity);
+
+ delete params.sparams;
+ params.sparams = createMapgenParams(params.mg_name);
+ if (params.sparams)
+ params.sparams->readParams(settings);