diff options
Diffstat (limited to 'src/game/GridNotifiers.h')
-rw-r--r-- | src/game/GridNotifiers.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 7b860af1d1e..b0abf0aae79 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -940,6 +940,31 @@ namespace Trinity // Creature checks + class NearestHostileUnitCheck + { + public: + explicit NearestHostileUnitCheck(Creature const* creature, float dist = 0) : me(creature) + { + m_range = (dist == 0 ? 9999 : dist); + } + bool operator()(Unit* u) + { + if (!me->IsWithinDistInMap(u, m_range)) + return false; + + if (!me->canAttack(u)) + return false; + + m_range = me->GetDistance(u); // use found unit range as new range limit for next check + return true; + } + + private: + Creature const *me; + float m_range; + NearestHostileUnitCheck(NearestHostileUnitCheck const&); + }; + class NearestHostileUnitInAttackDistanceCheck { public: @@ -950,7 +975,6 @@ namespace Trinity } bool operator()(Unit* u) { - // TODO: addthreat for every enemy in range? if (!me->IsWithinDistInMap(u, m_range)) return false; @@ -965,7 +989,7 @@ namespace Trinity return false; } - m_range = me->GetDistance(u); + m_range = me->GetDistance(u); // use found unit range as new range limit for next check return true; } float GetLastRange() const { return m_range; } |