public bool LineOfSight(Attackable a, Attackable b)
 {
     return grid.LineOfSight(a.Position, b.Position);
 }
 public bool IsInSightRange(Attackable a, int faction)
 {
     foreach (Attackable att in attackables)
     {
         if (att.Faction == faction && AttackableHelper.Distance(att, a) <= att.VisionRange)
         {
             return true;
         }
     }
     return false;
 }
 public void Attack(Attackable target)
 {
     AttackTarget = target;
     fsm.ChangeState(FSMState.FSMStates.Attack, true);
     AttackMoving = false;
 }
 public Attackable GetNearestTarget(Attackable u, float range = float.MaxValue)
 {
     float distance = float.MaxValue;
     Attackable closest = null;
     foreach (Attackable a in attackables) {
         if (a == u || a.Faction == u.Faction)
             continue;
         float d = AttackableHelper.Distance(u,a);
         if (d < range && d < distance) {
             closest = a;
             distance = d;
         }
     }
     return closest;
 }
Beispiel #5
0
 public bool LineOfSight(Attackable a, Attackable b)
 {
     return(grid.LineOfSight(a.Position, b.Position));
 }