X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Femerge.cpp;h=b188a7f413986e2b4022fca838836f8c1a28d1cf;hb=87291ea44a61614d5bd9efc0657926da3f867b5f;hp=15f264c1a2245f5d7e28fa8414bf140486badba3;hpb=0850d3bb930ac5e2cfd71a58fd49725e4c2a4c96;p=oweals%2Fminetest.git diff --git a/src/emerge.cpp b/src/emerge.cpp index 15f264c1a..b188a7f41 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -34,9 +34,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "map.h" #include "mapblock.h" +#include "mapgen_flat.h" +#include "mapgen_fractal.h" #include "mapgen_v5.h" #include "mapgen_v6.h" #include "mapgen_v7.h" +#include "mapgen_valleys.h" #include "mapgen_singlenode.h" #include "mg_biome.h" #include "mg_ore.h" @@ -54,6 +57,7 @@ with this program; if not, write to the Free Software Foundation, Inc., struct MapgenDesc { const char *name; MapgenFactory *factory; + bool is_user_visible; }; class EmergeThread : public Thread { @@ -100,10 +104,13 @@ private: //// MapgenDesc g_reg_mapgens[] = { - {"v5", new MapgenFactoryV5}, - {"v6", new MapgenFactoryV6}, - {"v7", new MapgenFactoryV7}, - {"singlenode", new MapgenFactorySinglenode}, + {"v5", new MapgenFactoryV5, true}, + {"v6", new MapgenFactoryV6, true}, + {"v7", new MapgenFactoryV7, true}, + {"flat", new MapgenFactoryFlat, true}, + {"fractal", new MapgenFactoryFractal, true}, + {"valleys", new MapgenFactoryValleys, true}, + {"singlenode", new MapgenFactorySinglenode, false}, }; //// @@ -216,7 +223,7 @@ void EmergeManager::initMapgens() Mapgen *EmergeManager::getCurrentMapgen() { for (u32 i = 0; i != m_threads.size(); i++) { - if (m_threads[i]->isSameThread()) + if (m_threads[i]->isCurrentThread()) return m_threads[i]->m_mapgen; } @@ -255,6 +262,12 @@ void EmergeManager::stopThreads() } +bool EmergeManager::isRunning() +{ + return m_threads_active; +} + + bool EmergeManager::enqueueBlockEmerge( u16 peer_id, v3s16 blockpos, @@ -343,10 +356,13 @@ bool EmergeManager::isBlockUnderground(v3s16 blockpos) } -void EmergeManager::getMapgenNames(std::vector *mgnames) +void EmergeManager::getMapgenNames( + std::vector *mgnames, bool include_hidden) { - for (u32 i = 0; i != ARRLEN(g_reg_mapgens); i++) - mgnames->push_back(g_reg_mapgens[i].name); + for (u32 i = 0; i != ARRLEN(g_reg_mapgens); i++) { + if (include_hidden || g_reg_mapgens[i].is_user_visible) + mgnames->push_back(g_reg_mapgens[i].name); + } } @@ -464,7 +480,7 @@ EmergeThread::EmergeThread(Server *server, int ethreadid) : m_emerge(NULL), m_mapgen(NULL) { - name = "Emerge-" + itos(ethreadid); + m_name = "Emerge-" + itos(ethreadid); } @@ -615,7 +631,7 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata, void *EmergeThread::run() { - DSTACK(__FUNCTION_NAME); + DSTACK(FUNCTION_NAME); BEGIN_DEBUG_EXCEPTION_HANDLER v3s16 pos; @@ -688,6 +704,6 @@ void *EmergeThread::run() m_server->setAsyncFatalError(err.str()); } - END_DEBUG_EXCEPTION_HANDLER(errorstream) + END_DEBUG_EXCEPTION_HANDLER return NULL; }