summaryrefslogtreecommitdiff
path: root/src/mapgen.cpp
diff options
context:
space:
mode:
authorngosang <diegodelasheras@gmail.com>2015-01-26 12:44:49 +0100
committerShadowNinja <shadowninja@minetest.net>2015-03-07 15:53:39 -0500
commitf6e4c5d9cf459e8278a76a2beaee59732e841458 (patch)
tree6748d30881ddd5b5679d89b4ea5838fb5598fe18 /src/mapgen.cpp
parent9da99efca226c377d3bc2914561edffd812a9c1a (diff)
downloadminetest-f6e4c5d9cf459e8278a76a2beaee59732e841458.tar.gz
minetest-f6e4c5d9cf459e8278a76a2beaee59732e841458.tar.bz2
minetest-f6e4c5d9cf459e8278a76a2beaee59732e841458.zip
Respect game mapgen flags and save world noise params
Diffstat (limited to 'src/mapgen.cpp')
-rw-r--r--src/mapgen.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mapgen.cpp b/src/mapgen.cpp
index 17aa1dd92..67cf3d065 100644
--- a/src/mapgen.cpp
+++ b/src/mapgen.cpp
@@ -522,3 +522,47 @@ void GenElementManager::clear()
{
m_elements.clear();
}
+
+
+void MapgenParams::load(const Settings &settings)
+{
+ std::string seed_str;
+ const char *seed_name = (&settings == g_settings) ? "fixed_map_seed" : "seed";
+
+ if (settings.getNoEx(seed_name, seed_str) && !seed_str.empty()) {
+ seed = read_seed(seed_str.c_str());
+ } else {
+ seed = ((u64)(myrand() & 0xFFFF) << 0) |
+ ((u64)(myrand() & 0xFFFF) << 16) |
+ ((u64)(myrand() & 0xFFFF) << 32) |
+ ((u64)(myrand() & 0xFFFF) << 48);
+ }
+
+ settings.getNoEx("mg_name", mg_name);
+ settings.getS16NoEx("water_level", water_level);
+ settings.getS16NoEx("chunksize", chunksize);
+ settings.getFlagStrNoEx("mg_flags", flags, flagdesc_mapgen);
+ settings.getNoiseParams("mg_biome_np_heat", np_biome_heat);
+ settings.getNoiseParams("mg_biome_np_humidity", np_biome_humidity);
+
+ delete sparams;
+ sparams = EmergeManager::createMapgenParams(mg_name);
+ if (sparams)
+ sparams->readParams(&settings);
+}
+
+
+void MapgenParams::save(Settings &settings) const
+{
+ settings.set("mg_name", mg_name);
+ settings.setU64("seed", seed);
+ settings.setS16("water_level", water_level);
+ settings.setS16("chunksize", chunksize);
+ settings.setFlagStr("mg_flags", flags, flagdesc_mapgen, (u32)-1);
+ settings.setNoiseParams("mg_biome_np_heat", np_biome_heat);
+ settings.setNoiseParams("mg_biome_np_humidity", np_biome_humidity);
+
+ if (sparams)
+ sparams->writeParams(&settings);
+}
+