/// <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()); } }
/// <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>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); }
/// <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); }