public static bool CanFireAt(Unit fromUnit, Position target) { List <Position> lineRoute = new List <Position>(); Bresehnham.CalcLineTo( lineRoute, (fromUnit.Pos.X * GridSize), (fromUnit.Pos.Y * GridSize), (target.X * GridSize), (target.Y * GridSize)); foreach (Position route in lineRoute) { int x = route.X / GridSize; int y = route.Y / GridSize; Position p = new Position(x, y); /* * if (fromUnit.Owner.Game.Map.Matrix[x, y] == 0) * return false; */ // find units in the area of the bullet Unit unit = fromUnit.Owner.Game.Map.Units.GetUnitAt(p); if (unit != null && unit != fromUnit && unit.Owner == fromUnit.Owner) { return(false); } } return(true); }
public void Init(Move move) { Move = move; this.lineRoute = new List <Position>(); Bresehnham.CalcLineTo( lineRoute, (move.Positions[0].X * GridSize), (move.Positions[0].Y * GridSize), (move.Positions[move.Positions.Count - 1].X * GridSize), (move.Positions[move.Positions.Count - 1].Y * GridSize)); }