aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-29 11:58:19 -0600
committermegamage <none@none>2009-03-29 11:58:19 -0600
commite528611141ca0923503933a0fe4d0f0720efaf91 (patch)
treec6a3232a199cc203e09fabea0ffdc7bb5a715060 /src/game/Map.cpp
parent3733af4d6ae2615a09c421b5a6a47c4085575f91 (diff)
*Fix a crash.
--HG-- branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r--src/game/Map.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index c00b774c68f..3511e7b5bca 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -1074,27 +1074,31 @@ bool Map::UnloadGrid(const uint32 &x, const uint32 &y, bool unloadAll)
return false;
DEBUG_LOG("Unloading grid[%u,%u] for map %u", x,y, i_id);
+
ObjectGridUnloader unloader(*grid);
if(!unloadAll)
{
// Finish creature moves, remove and delete all creatures with delayed remove before moving to respawn grids
// Must know real mob position before move
- DoDelayedMovesAndRemoves();
+ MoveAllCreaturesInMoveList();
// move creatures to respawn grids if this is diff.grid or to remove list
unloader.MoveToRespawnN();
// Finish creature moves, remove and delete all creatures with delayed remove before unload
- DoDelayedMovesAndRemoves();
+ MoveAllCreaturesInMoveList();
}
- else
- RemoveAllObjectsInRemoveList();
- //assert(grid.NoWorldObjectInGrid());
+ ObjectGridCleaner cleaner(*grid);
+ cleaner.CleanN();
+
+ RemoveAllObjectsInRemoveList();
+
unloader.UnloadN();
- //assert(grid.NoWorldObjectInGrid());
- //assert(grid.NoGridObjectInGrid());
+
+ assert(i_objectsToRemove.empty());
+
delete grid;
setNGrid(NULL, x, y);
}