From 6bc62d730ed08e6e12d9b57d4914e98019298781 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 31 May 2014 22:43:11 -0500 Subject: Core/Auras: Fixed build and crash from previous commit. --- src/server/game/DataStores/DBCStructure.h | 2 +- src/server/game/Maps/PhaseMgr.cpp | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index f3154d727e5..feb473958b5 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -2523,5 +2523,5 @@ typedef std::vector TaxiPathNodesByPath; #define TaxiMaskSize 114 typedef uint8 TaxiMask[TaxiMaskSize]; -typedef std::unordered_map const&> PhaseGroupContainer; +typedef std::unordered_map> PhaseGroupContainer; #endif diff --git a/src/server/game/Maps/PhaseMgr.cpp b/src/server/game/Maps/PhaseMgr.cpp index 0f542bf5948..13d357702ab 100644 --- a/src/server/game/Maps/PhaseMgr.cpp +++ b/src/server/game/Maps/PhaseMgr.cpp @@ -357,31 +357,27 @@ uint32 PhaseData::RemoveAuraInfo(uint32 spellId) PhaseInfoContainer::const_iterator rAura = spellPhaseInfo.find(spellId); if (rAura != spellPhaseInfo.end()) { - bool serverUpdated = false; - bool clientUpdated = false; uint32 updateflag = 0; for (auto phase = rAura->second.begin(); phase != rAura->second.end(); ++phase) { - if (!clientUpdated && phase->NeedsClientSideUpdate()) - { - clientUpdated = true; + if (phase->NeedsClientSideUpdate()) updateflag |= PHASE_UPDATE_FLAG_CLIENTSIDE_CHANGED; - } - if (!serverUpdated && phase->NeedsServerSideUpdate()) + if (phase->NeedsServerSideUpdate()) { - serverUpdated = true; _PhasemaskThroughAuras = 0; - updateflag |= PHASE_UPDATE_FLAG_SERVERSIDE_CHANGED; + } + } - spellPhaseInfo.erase(rAura); + if (updateflag & PHASE_UPDATE_FLAG_SERVERSIDE_CHANGED) + { + spellPhaseInfo.erase(rAura); - for (PhaseInfoContainer::const_iterator itr = spellPhaseInfo.begin(); itr != spellPhaseInfo.end(); ++itr) - for (auto ph = itr->second.begin(); ph != itr->second.end(); ++ph) - _PhasemaskThroughAuras |= ph->phasemask; - } + for (PhaseInfoContainer::const_iterator itr = spellPhaseInfo.begin(); itr != spellPhaseInfo.end(); ++itr) + for (auto ph = itr->second.begin(); ph != itr->second.end(); ++ph) + _PhasemaskThroughAuras |= ph->phasemask; } return updateflag; -- cgit v1.2.3