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