예제 #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);
        }
        private RangoHabilidad rangoHabilidad;                          // Rango de la habilidad
        #endregion

        #region Estados
        /// <summary>
        /// <para>Cuando se entra al estado</para>
        /// </summary>
        public override void Enter()        // Cuando se entra al estado
        {
            base.Enter();
            rangoHabilidad = Turno.habilidad.GetComponent <RangoHabilidad>();
            SeleccionarAreas();
            PanelEstadisticas.MostrarAliado(Turno.unidad.gameObject);

            if (rangoHabilidad.OrientacionDir)
            {
                ActualizarPanelInfoObjetivo(Pos);
            }
            if (control.Actual == Controladores.Maquina)
            {
                StartCoroutine(IAObjetivo());
            }
        }
예제 #3
0
        /// <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));
        }
예제 #4
0
        /// <summary>
        /// <para>Comprueba si la direccion es independiente</para>
        /// </summary>
        /// <param name="plan"></param>
        /// <returns></returns>
        private bool IsDireccionIndependiente(PlanDeAtaque plan)        // Comprueba si la direccion es independiente
        {
            RangoHabilidad rango = plan.habilidad.GetComponent <RangoHabilidad>();

            return(!rango.OrientacionDir);
        }
예제 #5
0
        /// <summary>
        /// <para>Comprueba si la posicion es independiente</para>
        /// </summary>
        /// <param name="plan"></param>
        /// <returns></returns>
        private bool IsPosicionIndependiente(PlanDeAtaque plan)        // Comprueba si la posicion es independiente
        {
            RangoHabilidad rango = plan.habilidad.GetComponent <RangoHabilidad>();

            return(rango.OrientacionPos == false);
        }