From 65dca120d34febdaa84a63e17f638ab0fa59b3df Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 1 Feb 2018 13:10:51 -0300 Subject: Core/Spells: rework part 4: iterate over effects first Ref #18395 Implement far spell queue processing Closes #7395 (cherry picked from commit 080d2c6cd439acb2059adc4e24a279de98aa0db6) --- src/server/game/Maps/Map.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/server/game/Maps/Map.cpp') diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index fc2c950b57c..81578dbc41a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3534,8 +3534,22 @@ bool Map::IsSpawnGroupActive(uint32 groupId) const return (_toggledSpawnGroupIds.find(groupId) != _toggledSpawnGroupIds.end()) != !(data->flags & SPAWNGROUP_FLAG_MANUAL_SPAWN); } +void Map::AddFarSpellCallback(FarSpellCallback&& callback) +{ + _farSpellCallbacks.Enqueue(new FarSpellCallback(std::move(callback))); +} + void Map::DelayedUpdate(uint32 t_diff) { + { + FarSpellCallback* callback; + while (_farSpellCallbacks.Dequeue(callback)) + { + (*callback)(this); + delete callback; + } + } + for (_transportsUpdateIter = _transports.begin(); _transportsUpdateIter != _transports.end();) { Transport* transport = *_transportsUpdateIter; -- cgit v1.2.3