/// <summary>
        /// <para>Obtener el area a rango</para>
        /// </summary>
        /// <param name="grid">Grid</param>
        /// <returns></returns>
        public override List <Area> GetAreasARango(Grid grid)       // Obtener el area a rango
        {
            Punto       pos      = Unidad.Area.pos;
            List <Area> retValue = new List <Area>();
            int         dir      = (Unidad.dir == Direcciones.Norte || Unidad.dir == Direcciones.Este) ? 1 : -1;
            int         lateral  = 1;

            if (Unidad.dir == Direcciones.Norte || Unidad.dir == Direcciones.Sur)
            {
                for (int n = 1; n <= horizontal; n++)
                {
                    int min = -(lateral / 2);
                    int max = (lateral / 2);
                    for (int i = min; i <= max; i++)
                    {
                        Punto next = new Punto(pos.x + i, pos.y + (n * dir));
                        Area  area = grid.GetArea(next);
                        if (ComprobarAreaValida(area))
                        {
                            retValue.Add(area);
                        }
                    }
                    lateral += 2;
                }
            }
            else
            {
                for (int n = 1; n <= horizontal; n++)
                {
                    int min = -(lateral / 2);
                    int max = (lateral / 2);
                    for (int i = min; i <= max; i++)
                    {
                        Punto next = new Punto(pos.x + (n * dir), pos.y + i);
                        Area  area = grid.GetArea(next);
                        if (ComprobarAreaValida(area))
                        {
                            retValue.Add(area);
                        }
                    }
                    lateral += 2;
                }
            }

            return(retValue);
        }
        /// <summary>
        /// <para>Obtener el area en area</para>
        /// </summary>
        /// <param name="grid">Grid</param>
        /// <param name="pos">Posicion</param>
        /// <returns></returns>
        public override List <Area> GetAreasEnArea(Grid grid, Punto pos)       // Obtener el area en area
        {
            List <Area> retValue = new List <Area>();
            Area        area     = grid.GetArea(pos);

            if (area != null)
            {
                retValue.Add(area);
            }
            return(retValue);
        }
Exemple #3
0
        /// <summary>
        /// <para>Obtener el area a rango</para>
        /// </summary>
        /// <param name="grid">Grid</param>
        /// <returns></returns>
        public override List <Area> GetAreasARango(Grid grid)       // Obtener el area a rango
        {
            Punto       posInicial = Unidad.Area.pos;
            Punto       posFinal;
            List <Area> retValue = new List <Area>();

            switch (Unidad.dir)
            {
            case Direcciones.Norte:
                posFinal = new Punto(posInicial.x, grid.Max.y);
                break;

            case Direcciones.Este:
                posFinal = new Punto(grid.Max.x, posInicial.y);
                break;

            case Direcciones.Sur:
                posFinal = new Punto(posInicial.x, grid.Min.y);
                break;

            default:                     // West
                posFinal = new Punto(grid.Min.x, posInicial.y);
                break;
            }

            int dist = 0;

            while (posInicial != posFinal)
            {
                if (posInicial.x < posFinal.x)
                {
                    posInicial.x++;
                }
                else if (posInicial.x > posFinal.x)
                {
                    posInicial.x--;
                }

                if (posInicial.y < posFinal.y)
                {
                    posInicial.y++;
                }
                else if (posInicial.y > posFinal.y)
                {
                    posInicial.y--;
                }

                Area a = grid.GetArea(posInicial);
                if (a != null && Mathf.Abs(a.altura - Unidad.Area.altura) <= vertical)
                {
                    retValue.Add(a);
                }

                dist++;
                if (dist >= horizontal)
                {
                    break;
                }
            }

            return(retValue);
        }
Exemple #4
0
        private Area area;                                              // Area
        #endregion

        #region Metodos
        /// <summary>
        /// <para>Obtener el area en area</para>
        /// </summary>
        /// <param name="grid">Grid</param>
        /// <param name="pos">Posicion</param>
        /// <returns></returns>
        public override List <Area> GetAreasEnArea(Grid grid, Punto pos)       // Obtener el area en area
        {
            area = grid.GetArea(pos);
            return(grid.Buscar(area, Criterio));
        }