X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmap.h;h=ab5f45ab96443920652dfca62f62e18174d2674b;hb=06f328207fa0a3e606992d3569b061b335eb0f48;hp=9b505d8e66984807d19d305910f00126062dfc1f;hpb=eec456be63f6fee8604f7a9c40aa41a1af3f1fac;p=dragonfireclient.git diff --git a/src/map.h b/src/map.h index 9b505d8e6..ab5f45ab9 100644 --- a/src/map.h +++ b/src/map.h @@ -41,7 +41,7 @@ class ServerMapSector; class MapBlock; class NodeMetadata; class IGameDef; -class IRollbackReportSink; +class IRollbackManager; class EmergeManager; class ServerEnvironment; struct BlockMakeData; @@ -80,9 +80,9 @@ struct MapEditEvent MapEditEvent(): type(MEET_OTHER), + n(CONTENT_AIR), already_known_by_peer(0) - { - } + { } MapEditEvent * clone() { @@ -189,7 +189,7 @@ class Map /*: public NodeContainer*/ MapBlock * getBlockNoCreateNoEx(v3s16 p); /* Server overrides */ - virtual MapBlock * emergeBlock(v3s16 p, bool allow_generate=true) + virtual MapBlock * emergeBlock(v3s16 p, bool create_blank=true) { return getBlockNoCreateNoEx(p); } // Returns InvalidPositionException if not found @@ -197,14 +197,13 @@ class Map /*: public NodeContainer*/ bool isValidPosition(v3s16 p); - // throws InvalidPositionException if not found - MapNode getNode(v3s16 p); - // throws InvalidPositionException if not found void setNode(v3s16 p, MapNode & n); // Returns a CONTENT_IGNORE node if not found - MapNode getNodeNoEx(v3s16 p); + // If is_valid_position is not NULL then this will be set to true if the + // position is valid, otherwise false + MapNode getNodeNoEx(v3s16 p, bool *is_valid_position = NULL); void unspreadLight(enum LightBank bank, std::map & from_nodes, @@ -268,37 +267,28 @@ class Map /*: public NodeContainer*/ virtual void save(ModifiedState save_level){assert(0);}; - // Server implements this. - // Client leaves it as no-op. + // Server implements these. + // Client leaves them as no-op. virtual bool saveBlock(MapBlock *block) { return false; }; + virtual bool deleteBlock(v3s16 blockpos) { return false; }; /* Updates usage timers and unloads unused blocks and sectors. Saves modified blocks before unloading on MAPTYPE_SERVER. */ void timerUpdate(float dtime, float unload_timeout, - std::list *unloaded_blocks=NULL); + std::vector *unloaded_blocks=NULL); /* Unloads all blocks with a zero refCount(). Saves modified blocks before unloading on MAPTYPE_SERVER. */ - void unloadUnreferencedBlocks(std::list *unloaded_blocks=NULL); + void unloadUnreferencedBlocks(std::vector *unloaded_blocks=NULL); // Deletes sectors and their blocks from memory // Takes cache into account // If deleted sector is in sector cache, clears cache - void deleteSectors(std::list &list); - -#if 0 - /* - Unload unused data - = flush changed to disk and delete from memory, if usage timer of - block is more than timeout - */ - void unloadUnusedData(float timeout, - core::list *deleted_blocks=NULL); -#endif + void deleteSectors(std::vector &list); // For debug printing. Prints "Map: ", "ServerMap: " or "ClientMap: " virtual void PrintInfo(std::ostream &out); @@ -367,6 +357,12 @@ class Map /*: public NodeContainer*/ // Queued transforming water nodes UniqueQueue m_transforming_liquid; + +private: + f32 m_transforming_liquid_loop_count_multiplier; + u32 m_unprocessed_count; + u32 m_inc_trending_up_start_time; // milliseconds + bool m_queue_size_timer_started; }; /* @@ -418,7 +414,7 @@ class ServerMap : public Map - Create blank filled with CONTENT_IGNORE */ - MapBlock * emergeBlock(v3s16 p, bool create_blank=true); + MapBlock *emergeBlock(v3s16 p, bool create_blank=true); /* Try to get a block. @@ -460,8 +456,8 @@ class ServerMap : public Map void endSave(); void save(ModifiedState save_level); - void listAllLoadableBlocks(std::list &dst); - void listAllLoadedBlocks(std::list &dst); + void listAllLoadableBlocks(std::vector &dst); + void listAllLoadedBlocks(std::vector &dst); // Saves map seed and possibly other stuff void saveMapMeta(); void loadMapMeta(); @@ -493,6 +489,10 @@ class ServerMap : public Map // Database version void loadBlock(std::string *blob, v3s16 p3d, MapSector *sector, bool save_after_load=false); + bool deleteBlock(v3s16 blockpos); + + void updateVManip(v3s16 pos); + // For debug printing virtual void PrintInfo(std::ostream &out); @@ -528,11 +528,11 @@ class ServerMap : public Map #define VMANIP_BLOCK_DATA_INEXIST 1 #define VMANIP_BLOCK_CONTAINS_CIGNORE 2 -class ManualMapVoxelManipulator : public VoxelManipulator +class MMVManip : public VoxelManipulator { public: - ManualMapVoxelManipulator(Map *map); - virtual ~ManualMapVoxelManipulator(); + MMVManip(Map *map); + virtual ~MMVManip(); virtual void clear() { @@ -544,11 +544,13 @@ class ManualMapVoxelManipulator : public VoxelManipulator {m_map = map;} void initialEmerge(v3s16 blockpos_min, v3s16 blockpos_max, - bool load_if_inexistent = true); + bool load_if_inexistent = true); // This is much faster with big chunks of generated data void blitBackAll(std::map * modified_blocks, - bool overwrite_generated = true); + bool overwrite_generated = true); + + bool m_is_dirty; protected: bool m_create_area;