From e5e8a3755f8ff89cf69d6aa4d64a07924549efde Mon Sep 17 00:00:00 2001 From: ApoC Date: Fri, 5 Jun 2009 16:40:14 +0200 Subject: [PATCH] [7966] Clean up in Spell:SetTargetMap * Little optimization * Code style cleanup * Formating cleanup Signed-off-by: ApoC --- src/game/Spell.cpp | 73 ++++++++++++++++++---------------------- src/shared/revision_nr.h | 2 +- 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 319ad16dc..34332c67f 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1561,7 +1561,8 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,UnitList& TagUnitMap) else { Unit* pUnitTarget = m_targets.getUnitTarget(); - if(!pUnitTarget) + Unit* originalCaster = GetOriginalCaster(); + if(!pUnitTarget || !originalCaster) break; unMaxTargets = EffectChainTarget; @@ -1578,55 +1579,45 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,UnitList& TagUnitMap) cell.data.Part.reserved = ALL_DISTRICT; cell.SetNoCreate(); - Unit* originalCaster = GetOriginalCaster(); - if(originalCaster) + std::list tempUnitMap; { - std::list tempUnitMap; + MaNGOS::AnyAoETargetUnitInObjectRangeCheck u_check(pUnitTarget, originalCaster, max_range, false); + MaNGOS::UnitListSearcher searcher(m_caster, tempUnitMap, u_check); + TypeContainerVisitor, WorldTypeMapContainer> world_unit_searcher(searcher); + TypeContainerVisitor, GridTypeMapContainer> grid_unit_searcher(searcher); + CellLock cell_lock(cell, p); - { - MaNGOS::AnyAoETargetUnitInObjectRangeCheck u_check(pUnitTarget, originalCaster, max_range, false); - MaNGOS::UnitListSearcher searcher(m_caster, tempUnitMap, u_check); + cell_lock->Visit(cell_lock, world_unit_searcher, *m_caster->GetMap()); + cell_lock->Visit(cell_lock, grid_unit_searcher, *m_caster->GetMap()); + } + if (tempUnitMap.empty()) + break; - TypeContainerVisitor, WorldTypeMapContainer > world_unit_searcher(searcher); - TypeContainerVisitor, GridTypeMapContainer > grid_unit_searcher(searcher); + tempUnitMap.sort(TargetDistanceOrder(pUnitTarget)); - CellLock cell_lock(cell, p); - cell_lock->Visit(cell_lock, world_unit_searcher, *m_caster->GetMap()); - cell_lock->Visit(cell_lock, grid_unit_searcher, *m_caster->GetMap()); - } + if (*tempUnitMap.begin() == pUnitTarget) + tempUnitMap.erase (tempUnitMap.begin()); - tempUnitMap.sort(TargetDistanceOrder(pUnitTarget)); + TagUnitMap.push_back(pUnitTarget); + uint32 t = unMaxTargets - 1; + Unit *prev = pUnitTarget; + std::list::iterator next = tempUnitMap.begin(); - if(tempUnitMap.empty()) + while (t && next != tempUnitMap.end()) + { + if (!prev->IsWithinDist (*next,CHAIN_SPELL_JUMP_RADIUS)) break; - - if(*tempUnitMap.begin() == pUnitTarget) - tempUnitMap.erase(tempUnitMap.begin()); - - TagUnitMap.push_back(pUnitTarget); - uint32 t = unMaxTargets - 1; - Unit *prev = pUnitTarget; - std::list::iterator next = tempUnitMap.begin(); - - while(t && next != tempUnitMap.end() ) + if (!prev->IsWithinLOSInMap (*next)) { - if(!prev->IsWithinDist(*next,CHAIN_SPELL_JUMP_RADIUS)) - break; - - if(!prev->IsWithinLOSInMap(*next)) - { - ++next; - continue; - } - - prev = *next; - TagUnitMap.push_back(prev); - tempUnitMap.erase(next); - tempUnitMap.sort(TargetDistanceOrder(prev)); - next = tempUnitMap.begin(); - - --t; + ++next; + continue; } + prev = *next; + TagUnitMap.push_back(prev); + tempUnitMap.erase(next); + tempUnitMap.sort (TargetDistanceOrder(prev)); + next = tempUnitMap.begin(); + --t; } } }break; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 26aaceaf3..441a4f4b2 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7965" + #define REVISION_NR "7966" #endif // __REVISION_NR_H__