示例#1
0
        /// <summary>
        /// <para>Selecciona el plan de direccion</para>
        /// </summary>
        /// <param name="plan"></param>
        private void PlanDireccionIndependiente(PlanDeAtaque plan)        // Selecciona el plan de direccion
        {
            // Obtener datos
            Area areaInicial = Unidad.Area;
            Dictionary <Area, OpcionAtaque> mapeo = new Dictionary <Area, OpcionAtaque>();
            RangoHabilidad rangoHab    = plan.habilidad.GetComponent <RangoHabilidad>();
            List <Area>    opcionesMov = GetOpcionesMovimiento();

            // Comprobar las opciones de movimiento
            for (int n = 0; n < opcionesMov.Count; n++)
            {
                // Posicionar la unidad en la siguiente area
                Area sigArea = opcionesMov[n];
                Unidad.Posicionar(sigArea);

                // Obtener las posibles opciones de ataque
                List <Area> opcionesAtaq = rangoHab.GetAreasARango(freya.grid);

                // Comprobar las opciones de ataques
                for (int i = 0; i < opcionesAtaq.Count; i++)
                {
                    Area         areaAtaque = opcionesAtaq[i];
                    OpcionAtaque opcionAtaq = null;

                    // Comprobar si el area puede ser atacada
                    if (mapeo.ContainsKey(areaAtaque))
                    {
                        opcionAtaq = mapeo[areaAtaque];
                    }
                    else
                    {
                        // Cambiar la ocpion
                        opcionAtaq           = new OpcionAtaque();
                        mapeo[areaAtaque]    = opcionAtaq;
                        opcionAtaq.objetivo  = areaAtaque;
                        opcionAtaq.direccion = Unidad.dir;
                        AnalizarLocalizacionAtaque(plan, opcionAtaq);
                    }

                    // Moveer hacia la siguiente area
                    opcionAtaq.AddMovimientoObjetivo(sigArea);
                }
            }

            // Posicionar unidad
            Unidad.Posicionar(areaInicial);
            List <OpcionAtaque> list = new List <OpcionAtaque>(mapeo.Values);

            // Elegir la mejor opcion
            ElegirMejorOpcion(plan, list);
        }
        /// <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 board, Punto pos)
        {
            RangoHabilidad rh = GetComponent <RangoHabilidad>();

            return(rh.GetAreasARango(board));
        }
 /// <summary>
 /// <para>Selecciona las areas a rango</para>
 /// </summary>
 private void SeleccionarAreas()        // Selecciona las areas a rango
 {
     areas = rangoHabilidad.GetAreasARango(Grid);
     Grid.SeleccionarAreas(areas);
 }