Example #1
0
        /// <summary>
        /// <para>Selecciona el plan de direccion</para>
        /// </summary>
        /// <param name="plan"></param>
        private void PlanDirectionDependent(PlanDeAtaque plan)        // Selecciona el plan de direccion
        {
            // Obtener datos
            Area                areaInicial = Unidad.Area;
            Direcciones         dirInicial  = Unidad.dir;
            List <OpcionAtaque> list        = new List <OpcionAtaque>();
            List <Area>         opcionesMov = GetOpcionesMovimiento();

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

                // Comprobar las ocpiones de direccion
                for (int i = 0; i < 4; i++)
                {
                    Unidad.dir = (Direcciones)i;
                    OpcionAtaque opcionAtaq = new OpcionAtaque();
                    opcionAtaq.objetivo  = sigArea;
                    opcionAtaq.direccion = Unidad.dir;
                    AnalizarLocalizacionAtaque(plan, opcionAtaq);
                    opcionAtaq.AddMovimientoObjetivo(sigArea);
                    list.Add(opcionAtaq);
                }
            }

            // Posicionar unidad
            Unidad.Posicionar(areaInicial);
            Unidad.dir = dirInicial;

            // Elegir la mejor opcion
            ElegirMejorOpcion(plan, list);
        }
Example #2
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);
        }