diff options
Diffstat (limited to 'src/MapManager.cpp')
-rw-r--r-- | src/MapManager.cpp | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/MapManager.cpp b/src/MapManager.cpp index ae020d800..f7b393648 100644 --- a/src/MapManager.cpp +++ b/src/MapManager.cpp @@ -12,8 +12,16 @@ -cMapManager::cMapManager(cWorld * a_World) - : m_World(a_World) +// 6000 ticks or 5 minutes +#define MAP_DATA_SAVE_INTERVAL 6000 + + + + + +cMapManager::cMapManager(cWorld * a_World) : + m_World(a_World), + m_TicksUntilNextSave(MAP_DATA_SAVE_INTERVAL) { ASSERT(m_World != nullptr); } @@ -49,6 +57,16 @@ void cMapManager::TickMaps() { Map.Tick(); } + + if (m_TicksUntilNextSave == 0) + { + m_TicksUntilNextSave = MAP_DATA_SAVE_INTERVAL; + SaveMapData(); + } + else + { + m_TicksUntilNextSave--; + } } @@ -149,11 +167,18 @@ void cMapManager::SaveMapData(void) { cMap & Map = *it; - cMapSerializer Serializer(m_World->GetDataPath(), &Map); - - if (!Serializer.Save()) + if (Map.m_Dirty) { - LOGWARN("Could not save map #%i", Map.GetID()); + cMapSerializer Serializer(m_World->GetDataPath(), &Map); + + if (Serializer.Save()) + { + Map.m_Dirty = false; + } + else + { + LOGWARN("Could not save map #%i", Map.GetID()); + } } } } |