public void Attack(Unit toAttack) { if (attackingTimer.ElapsedMilliseconds < 1000) { return; } toAttack.Health.TakeDamage(Strength); attackingTimer.Restart(); }
public void TryMove() { if (!alreadyMovedThisTurn) { int moveIndex = lastUnitToMoveIndex; int nextUnitIndex = lastUnitToMoveIndex >= units.Count - 1 ? 0 : ++moveIndex; currentUnitTurn = units[nextUnitIndex]; currentUnitTurn.Move(); alreadyMovedThisTurn = true; } }
public void Add(Unit u) { units.Add(u); }
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; } }