Show
Ignore:
Timestamp:
11/22/08 00:36:22 (17 years ago)
Author:
yumileroy
Message:

Merged commit 269 (5f0e38da128a).

Original author: gvcoman
Date: 2008-11-21 14:34:05-05:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/GridNotifiers.h

    r272 r279  
    699699    // Creature checks 
    700700 
    701     class InAttackDistanceFromAnyHostileCreatureCheck 
    702     { 
    703         public: 
    704             explicit InAttackDistanceFromAnyHostileCreatureCheck(Unit* funit) : i_funit(funit) {} 
    705             bool operator()(Creature* u) 
    706             { 
    707                 if(u->isAlive() && u->IsHostileTo(i_funit) && i_funit->IsWithinDistInMap(u, u->GetAttackDistance(i_funit))) 
    708                     return true; 
    709  
    710                 return false; 
    711             } 
    712         private: 
    713             Unit* const i_funit; 
     701    class NearestHostileUnitInAttackDistanceCheck 
     702    { 
     703        public: 
     704            explicit NearestHostileUnitInAttackDistanceCheck(Creature const* creature, float dist = 0) : m_creature(creature)  
     705            { 
     706                m_range = (dist == 0 ? 9999 : dist); 
     707                m_force = (dist == 0 ? false : true); 
     708            } 
     709            bool operator()(Unit* u) 
     710            { 
     711                // TODO: addthreat for every enemy in range? 
     712                if(!m_creature->IsWithinDistInMap(u, m_range)) 
     713                    return false; 
     714 
     715                if(m_force) 
     716                { 
     717                    if(!m_creature->canAttack(u)) 
     718                        return false; 
     719                } 
     720                else 
     721                { 
     722                    if(!m_creature->canStartAttack(u)) 
     723                        return false; 
     724                } 
     725 
     726                m_range = m_creature->GetDistance(u); 
     727                return true; 
     728            } 
     729            float GetLastRange() const { return m_range; } 
     730        private: 
     731            Creature const *m_creature; 
     732            float m_range; 
     733            bool m_force; 
     734            NearestHostileUnitInAttackDistanceCheck(NearestHostileUnitInAttackDistanceCheck const&); 
    714735    }; 
    715736