[7966] Clean up in Spell:SetTargetMap

* Little optimization
* Code style cleanup
* Formating cleanup

Signed-off-by: ApoC <apoc@nymfe.net>
This commit is contained in:
ApoC 2009-06-05 16:40:14 +02:00
parent 30c054ae38
commit e5e8a3755f
2 changed files with 33 additions and 42 deletions

View file

@ -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,57 +1579,47 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,UnitList& TagUnitMap)
cell.data.Part.reserved = ALL_DISTRICT;
cell.SetNoCreate();
Unit* originalCaster = GetOriginalCaster();
if(originalCaster)
{
std::list<Unit *> tempUnitMap;
{
MaNGOS::AnyAoETargetUnitInObjectRangeCheck u_check(pUnitTarget, originalCaster, max_range, false);
MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck> searcher(m_caster, tempUnitMap, u_check);
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, WorldTypeMapContainer > world_unit_searcher(searcher);
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, GridTypeMapContainer > grid_unit_searcher(searcher);
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, WorldTypeMapContainer> world_unit_searcher(searcher);
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, GridTypeMapContainer> grid_unit_searcher(searcher);
CellLock<GridReadGuard> 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.empty())
break;
tempUnitMap.sort(TargetDistanceOrder(pUnitTarget));
if(tempUnitMap.empty())
break;
if(*tempUnitMap.begin() == pUnitTarget)
tempUnitMap.erase(tempUnitMap.begin());
if (*tempUnitMap.begin() == pUnitTarget)
tempUnitMap.erase (tempUnitMap.begin());
TagUnitMap.push_back(pUnitTarget);
uint32 t = unMaxTargets - 1;
Unit *prev = pUnitTarget;
std::list<Unit*>::iterator next = tempUnitMap.begin();
while(t && next != tempUnitMap.end() )
while (t && next != tempUnitMap.end())
{
if(!prev->IsWithinDist(*next,CHAIN_SPELL_JUMP_RADIUS))
if (!prev->IsWithinDist (*next,CHAIN_SPELL_JUMP_RADIUS))
break;
if(!prev->IsWithinLOSInMap(*next))
if (!prev->IsWithinLOSInMap (*next))
{
++next;
continue;
}
prev = *next;
TagUnitMap.push_back(prev);
tempUnitMap.erase(next);
tempUnitMap.sort(TargetDistanceOrder(prev));
tempUnitMap.sort (TargetDistanceOrder(prev));
next = tempUnitMap.begin();
--t;
}
}
}
}break;
case TARGET_ALL_ENEMY_IN_AREA:
{

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "7965"
#define REVISION_NR "7966"
#endif // __REVISION_NR_H__