From 5e2753c712e8f65fa50f4889fc1422393ba21413 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Mon, 29 Dec 2014 12:58:55 -0500 Subject: Expose mapgen parameters on scripting init Add minetest.get_mapgen_params() Deprecate minetest.register_on_mapgen_init() --- src/emerge.cpp | 61 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 21 deletions(-) (limited to 'src/emerge.cpp') diff --git a/src/emerge.cpp b/src/emerge.cpp index 133fd4a59..2828d490b 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -82,7 +82,8 @@ public: /////////////////////////////// Emerge Manager //////////////////////////////// -EmergeManager::EmergeManager(IGameDef *gamedef) { +EmergeManager::EmergeManager(IGameDef *gamedef) +{ //register built-in mapgens registerMapgen("v5", new MapgenFactoryV5()); registerMapgen("v6", new MapgenFactoryV6()); @@ -132,7 +133,8 @@ EmergeManager::EmergeManager(IGameDef *gamedef) { } -EmergeManager::~EmergeManager() { +EmergeManager::~EmergeManager() +{ for (unsigned int i = 0; i != emergethread.size(); i++) { if (threads_active) { emergethread[i]->Stop(); @@ -162,7 +164,8 @@ EmergeManager::~EmergeManager() { } -void EmergeManager::loadMapgenParams() { +void EmergeManager::loadMapgenParams() +{ loadParamsFromSettings(g_settings); if (g_settings->get("fixed_map_seed").empty()) { @@ -174,7 +177,8 @@ void EmergeManager::loadMapgenParams() { } -void EmergeManager::initMapgens() { +void EmergeManager::initMapgens() +{ if (mapgen.size()) return; @@ -197,7 +201,8 @@ void EmergeManager::initMapgens() { } -Mapgen *EmergeManager::getCurrentMapgen() { +Mapgen *EmergeManager::getCurrentMapgen() +{ for (unsigned int i = 0; i != emergethread.size(); i++) { if (emergethread[i]->IsSameThread()) return emergethread[i]->mapgen; @@ -207,7 +212,8 @@ Mapgen *EmergeManager::getCurrentMapgen() { } -void EmergeManager::startThreads() { +void EmergeManager::startThreads() +{ if (threads_active) return; @@ -218,7 +224,8 @@ void EmergeManager::startThreads() { } -void EmergeManager::stopThreads() { +void EmergeManager::stopThreads() +{ if (!threads_active) return; @@ -236,7 +243,8 @@ void EmergeManager::stopThreads() { } -bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate) { +bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate) +{ std::map::const_iterator iter; BlockEmergeData *bedata; u16 count; @@ -290,7 +298,8 @@ bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate } -int EmergeManager::getGroundLevelAtPoint(v2s16 p) { +int EmergeManager::getGroundLevelAtPoint(v2s16 p) +{ if (mapgen.size() == 0 || !mapgen[0]) { errorstream << "EmergeManager: getGroundLevelAtPoint() called" " before mapgen initialized" << std::endl; @@ -301,7 +310,8 @@ int EmergeManager::getGroundLevelAtPoint(v2s16 p) { } -bool EmergeManager::isBlockUnderground(v3s16 blockpos) { +bool EmergeManager::isBlockUnderground(v3s16 blockpos) +{ /* v2s16 p = v2s16((blockpos.X * MAP_BLOCKSIZE) + MAP_BLOCKSIZE / 2, (blockpos.Y * MAP_BLOCKSIZE) + MAP_BLOCKSIZE / 2); @@ -315,7 +325,8 @@ bool EmergeManager::isBlockUnderground(v3s16 blockpos) { } -u32 EmergeManager::getBlockSeed(v3s16 p) { +u32 EmergeManager::getBlockSeed(v3s16 p) +{ return (u32)(params.seed & 0xFFFFFFFF) + p.Z * 38134234 + p.Y * 42123 + @@ -324,12 +335,13 @@ u32 EmergeManager::getBlockSeed(v3s16 p) { Mapgen *EmergeManager::createMapgen(std::string mgname, int mgid, - MapgenParams *mgparams) { + MapgenParams *mgparams) +{ std::map::const_iterator iter; iter = mglist.find(mgname); if (iter == mglist.end()) { errorstream << "EmergeManager; mapgen " << mgname << - " not registered" << std::endl; + " not registered" << std::endl; return NULL; } @@ -338,12 +350,13 @@ Mapgen *EmergeManager::createMapgen(std::string mgname, int mgid, } -MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname) { +MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname) +{ std::map::const_iterator iter; iter = mglist.find(mgname); if (iter == mglist.end()) { errorstream << "EmergeManager: mapgen " << mgname << - " not registered" << std::endl; + " not registered" << std::endl; return NULL; } @@ -352,7 +365,8 @@ MapgenSpecificParams *EmergeManager::createMapgenParams(std::string mgname) { } -void EmergeManager::loadParamsFromSettings(Settings *settings) { +void EmergeManager::loadParamsFromSettings(Settings *settings) +{ std::string seed_str; const char *setname = (settings == g_settings) ? "fixed_map_seed" : "seed"; @@ -373,7 +387,8 @@ void EmergeManager::loadParamsFromSettings(Settings *settings) { } -void EmergeManager::saveParamsToSettings(Settings *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); @@ -387,7 +402,8 @@ void EmergeManager::saveParamsToSettings(Settings *settings) { } -void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory) { +void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory) +{ mglist.insert(std::make_pair(mgname, mgfactory)); infostream << "EmergeManager: registered mapgen " << mgname << std::endl; } @@ -395,7 +411,8 @@ void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory) ////////////////////////////// Emerge Thread ////////////////////////////////// -bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) { +bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) +{ std::map::iterator iter; JMutexAutoLock queuelock(emerge->queuemutex); @@ -423,7 +440,8 @@ bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) { bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b, - BlockMakeData *data, bool allow_gen) { + BlockMakeData *data, bool allow_gen) +{ v2s16 p2d(p.X, p.Z); //envlock: usually takes <=1ms, sometimes 90ms or ~400ms to acquire JMutexAutoLock envlock(m_server->m_env_mutex); @@ -454,7 +472,8 @@ bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b, } -void *EmergeThread::Thread() { +void *EmergeThread::Thread() +{ ThreadStarted(); log_register_thread("EmergeThread" + itos(id)); DSTACK(__FUNCTION_NAME); -- cgit v1.2.3