Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }