]> git.lizzy.rs Git - minetest.git/blobdiff - src/emerge.h
Remove legacy unused define DIGGING_PARTICLES_AMOUNT
[minetest.git] / src / emerge.h
index b72b2a2c35fee3e148e8e53a3fde5db86d6b5c78..76653e6cdf84d5da2e2db71a5b6c6bf8d1943b95 100644 (file)
@@ -42,6 +42,7 @@ class BiomeManager;
 class OreManager;
 class DecorationManager;
 class SchematicManager;
+class Server;
 
 // Structure containing inputs/outputs for chunk generation
 struct BlockMakeData {
@@ -97,8 +98,16 @@ class EmergeManager {
        u32 gen_notify_on;
        std::set<u32> gen_notify_on_deco_ids;
 
-       // Map generation parameters
-       MapgenParams params;
+       // Parameters passed to mapgens owned by ServerMap
+       // TODO(hmmmm): Remove this after mapgen helper methods using them
+       // are moved to ServerMap
+       MapgenParams *mgparams;
+
+       // Hackish workaround:
+       // For now, EmergeManager must hold onto a ptr to the Map's setting manager
+       // since the Map can only be accessed through the Environment, and the
+       // Environment is not created until after script initialization.
+       MapSettingsManager *map_settings_mgr;
 
        // Managers of various map generation-related components
        BiomeManager *biomemgr;
@@ -107,14 +116,14 @@ class EmergeManager {
        SchematicManager *schemmgr;
 
        // Methods
-       EmergeManager(IGameDef *gamedef);
+       EmergeManager(Server *server);
        ~EmergeManager();
 
-       void loadMapgenParams();
-       void initMapgens();
+       bool initMapgens(MapgenParams *mgparams);
 
        void startThreads();
        void stopThreads();
+       bool isRunning();
 
        bool enqueueBlockEmerge(
                u16 peer_id,
@@ -135,12 +144,10 @@ class EmergeManager {
 
        // Mapgen helpers methods
        Biome *getBiomeAtPoint(v3s16 p);
+       int getSpawnLevelAtPoint(v2s16 p);
        int getGroundLevelAtPoint(v2s16 p);
        bool isBlockUnderground(v3s16 blockpos);
 
-       static MapgenFactory *getMapgenFactory(const std::string &mgname);
-       static void getMapgenNames(
-               std::vector<const char *> *mgnames, bool include_hidden);
        static v3s16 getContainingChunk(v3s16 blockpos, s16 chunksize);
 
 private:
@@ -150,7 +157,7 @@ class EmergeManager {
 
        Mutex m_queue_mutex;
        std::map<v3s16, BlockEmergeData> m_blocks_enqueued;
-       std::map<u16, u16> m_peer_queue_count;
+       UNORDERED_MAP<u16, u16> m_peer_queue_count;
 
        u16 m_qlimit_total;
        u16 m_qlimit_diskonly;
@@ -158,11 +165,20 @@ class EmergeManager {
 
        // Requires m_queue_mutex held
        EmergeThread *getOptimalThread();
-       bool pushBlockEmergeData(v3s16 pos, u16 peer_requested, u16 flags,
-               EmergeCompletionCallback callback, void *callback_param);
+
+       bool pushBlockEmergeData(
+               v3s16 pos,
+               u16 peer_requested,
+               u16 flags,
+               EmergeCompletionCallback callback,
+               void *callback_param,
+               bool *entry_already_exists);
+
        bool popBlockEmergeData(v3s16 pos, BlockEmergeData *bedata);
 
        friend class EmergeThread;
+
+       DISABLE_CLASS_COPY(EmergeManager);
 };
 
 #endif