Example #1
0
        public void Attack(Unit toAttack)
        {
            if (attackingTimer.ElapsedMilliseconds < 1000)
            {
                return;
            }

            toAttack.Health.TakeDamage(Strength);
            attackingTimer.Restart();
        }
Example #2
0
 public void TryMove()
 {
     if (!alreadyMovedThisTurn)
     {
         int moveIndex = lastUnitToMoveIndex;
         int nextUnitIndex = lastUnitToMoveIndex >= units.Count - 1 ? 0 : ++moveIndex;
         currentUnitTurn = units[nextUnitIndex];
         currentUnitTurn.Move();
         alreadyMovedThisTurn = true;
     }
 }
Example #3
0
 public void Add(Unit u)
 {
     units.Add(u);
 }
Example #4
0
        private Unit GetClosestEnemy(Unit u)
        {
            var hostiles = from c in units
                           where c.Team != u.Team && c.Health.Alive
                           select c;

            var distances = new List<KeyValuePair<float, Unit>>();
            foreach (Unit h in hostiles)
            {
                float distance = Vector2.Distance(h.Position, u.Position);
                distances.Add(new KeyValuePair<float, Unit>(distance, h));
            }

            distances.Sort((x, y) => x.Key.CompareTo(y.Key));

            try
            {
                return distances.First().Value;
            }
            catch (InvalidOperationException)
            {
                return null;
            }
        }