From 1b765b974003219fe395a5b97afaf6cfa9f0d7ed Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 21 Nov 2011 13:29:16 +0200 Subject: Add reason parameter to setModified and print it out to verbosestream when saving block --- src/mapblock.h | 68 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 31 insertions(+), 37 deletions(-) (limited to 'src/mapblock.h') diff --git a/src/mapblock.h b/src/mapblock.h index 0866fc396..5b27d01c3 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -143,7 +143,7 @@ public: //data[i] = MapNode(); data[i] = MapNode(CONTENT_IGNORE); } - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "reallocate"); } /* @@ -160,45 +160,37 @@ public: reallocate(); } - /* - This is called internally or externally after the block is - modified, so that the block is saved and possibly not deleted from - memory. - */ - // DEPRECATED, use *Modified() - void setChangedFlag() - { - //dstream<<"Deprecated setChangedFlag() called"< m_modified){ + m_modified = mod; + m_modified_reason = reason; + m_modified_reason_too_long = false; + } else if(mod == m_modified){ + if(!m_modified_reason_too_long){ + if(m_modified_reason.size() < 40) + m_modified_reason += ", " + reason; + else{ + m_modified_reason += "..."; + m_modified_reason_too_long = true; + } + } + } } u32 getModified() { return m_modified; } + std::string getModifiedReason() + { + return m_modified_reason; + } void resetModified() { m_modified = MOD_STATE_CLEAN; + m_modified_reason = "none"; + m_modified_reason_too_long = false; } // is_underground getter/setter @@ -209,7 +201,7 @@ public: void setIsUnderground(bool a_is_underground) { is_underground = a_is_underground; - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "setIsUnderground"); } #ifndef SERVER @@ -228,7 +220,7 @@ public: { if(expired != m_lighting_expired){ m_lighting_expired = expired; - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "setLightingExpired"); } } bool getLightingExpired() @@ -243,7 +235,7 @@ public: void setGenerated(bool b) { if(b != m_generated){ - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "setGenerated"); m_generated = b; } } @@ -324,7 +316,7 @@ public: if(y < 0 || y >= MAP_BLOCKSIZE) throw InvalidPositionException(); if(z < 0 || z >= MAP_BLOCKSIZE) throw InvalidPositionException(); data[z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + y*MAP_BLOCKSIZE + x] = n; - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "setNode"); } void setNode(v3s16 p, MapNode & n) @@ -353,7 +345,7 @@ public: if(data == NULL) throw InvalidPositionException(); data[z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + y*MAP_BLOCKSIZE + x] = n; - raiseModified(MOD_STATE_WRITE_NEEDED); + raiseModified(MOD_STATE_WRITE_NEEDED, "setNodeNoCheck"); } void setNodeNoCheck(v3s16 p, MapNode & n) @@ -507,7 +499,7 @@ public: void setTimestamp(u32 time) { m_timestamp = time; - raiseModified(MOD_STATE_WRITE_AT_UNLOAD); + raiseModified(MOD_STATE_WRITE_AT_UNLOAD, "setTimestamp"); } void setTimestampNoChangedFlag(u32 time) { @@ -608,6 +600,8 @@ private: - On the client, this is used for nothing. */ u32 m_modified; + std::string m_modified_reason; + bool m_modified_reason_too_long; /* When propagating sunlight and the above block doesn't exist, -- cgit v1.2.3