1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Respect game mapgen flags and save world noise params

This commit is contained in:
ngosang 2015-01-26 12:44:49 +01:00 committed by ShadowNinja
parent 9da99efca2
commit f6e4c5d9cf
15 changed files with 128 additions and 151 deletions

View file

@ -166,7 +166,7 @@ EmergeManager::~EmergeManager()
void EmergeManager::loadMapgenParams()
{
loadParamsFromSettings(g_settings);
params.load(*g_settings);
}
@ -344,9 +344,9 @@ Mapgen *EmergeManager::createMapgen(const std::string &mgname, int mgid,
MapgenSpecificParams *EmergeManager::createMapgenParams(const std::string &mgname)
{
u32 i;
for (i = 0; i != ARRLEN(reg_mapgens) && mgname != reg_mapgens[i].name; i++);
for (i = 0; i < ARRLEN(reg_mapgens) && mgname != reg_mapgens[i].name; i++);
if (i == ARRLEN(reg_mapgens)) {
errorstream << "EmergeManager; mapgen " << mgname <<
errorstream << "EmergeManager: Mapgen " << mgname <<
" not registered" << std::endl;
return NULL;
}
@ -356,56 +356,6 @@ MapgenSpecificParams *EmergeManager::createMapgenParams(const std::string &mgnam
}
void EmergeManager::loadParamsFromSettings(Settings *settings)
{
std::string seed_str;
const char *setname = (settings == g_settings) ? "fixed_map_seed" : "seed";
if (!settings->getNoEx("seed", seed_str)) {
g_settings->getNoEx(setname, seed_str);
}
if (!seed_str.empty()) {
params.seed = read_seed(seed_str.c_str());
} else {
params.seed =
((u64)(myrand() & 0xffff) << 0) |
((u64)(myrand() & 0xffff) << 16) |
((u64)(myrand() & 0xffff) << 32) |
((u64)(myrand() & 0xffff) << 48);
}
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(g_settings);
params.sparams->readParams(settings);
}
}
void EmergeManager::saveParamsToSettings(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, (u32)-1);
settings->setNoiseParams("mg_biome_np_heat", params.np_biome_heat);
settings->setNoiseParams("mg_biome_np_humidity", params.np_biome_humidity);
if (params.sparams)
params.sparams->writeParams(settings);
}
////////////////////////////// Emerge Thread //////////////////////////////////
bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags)