/// <summary> /// <para>Buscar una unidad cercana</para> /// </summary> private void BuscarUnidadCercana() // Buscar una unidad cercana { unidadCercana = null; // Buscar con un criterio freya.grid.Buscar(Unidad.Area, delegate(Area arg1, Area arg2) { if (unidadCercana == null && arg2.contenido != null) { Bando bando = arg2.contenido.GetComponentInChildren <Bando>(); if (bando != null && Bando.IsCalculo(bando, Objetivos.Enemigo)) { // Si la alianza esta Unidad unidad = bando.GetComponent <Unidad>(); Stats stats = unidad.GetComponent <Stats>(); // Si la unidad no esta KO if (stats[TipoStats.HP] > 0) { // Obtener la unidad cercana unidadCercana = unidad; return(true); } } } return(unidadCercana == null); }); }
/// <summary> /// <para>Determina si tiene objetivo</para> /// </summary> /// <param name="area">Area</param> /// <returns></returns> public override bool IsTarget(Area area) // Determina si tiene objetivo { if (area == null || area.contenido == null) { return(false); } Bando bandoAre = area.contenido.GetComponentInChildren <Bando>(); return(bando.IsCalculo(bandoAre, Objetivos.Enemigo)); }
public bool IsConfuso; // Determina si esta confusa la unidad #endregion #region Funcionalidad /// <summary> /// <para>Determina el bando</para> /// </summary> /// <param name="bando"></param> /// <param name="objetivos"></param> /// <returns></returns> public bool IsCalculo(Bando bando, Objetivos objetivos) // Determina el bando { bool isCalculo = false; switch (objetivos) { case Objetivos.UnoMismo: isCalculo = bando == this; break; case Objetivos.Aliado: isCalculo = tipo == bando.tipo; break; case Objetivos.Enemigo: isCalculo = (tipo != bando.tipo) && bando.tipo != Bandos.Neutral; break; } return(IsConfuso ? !isCalculo : isCalculo); }
/// <summary> /// <para>Comprueba si la habilidad se puede realizar</para> /// </summary> /// <param name="plan"></param> /// <param name="area"></param> /// <returns></returns> private bool IsHabilidadRealizable(PlanDeAtaque plan, Area area) // Comprueba si la habilidad se puede realizar { bool isRealizable = false; // Si el objetivo es un area if (plan.objetivo == Objetivos.Area) { isRealizable = true; } else if (plan.objetivo != Objetivos.None) { // Si no es un area, pero si una unidad Bando other = area.contenido.GetComponentInChildren <Bando>(); if (other != null && Bando.IsCalculo(other, plan.objetivo)) { isRealizable = true; } } return(isRealizable); }
private Bando bando; // Bando #endregion #region Inicializadores /// <summary> /// <para>Inicializador de <see cref="EfectoHabilidadObjetivoEnemigo"/></para> /// </summary> private void Start() // Inicializador de EfectoHabilidadObjetivoEnemigo { bando = GetComponentInParent <Bando>(); }
/// <summary> /// <para>Agrega un bando</para> /// </summary> /// <param name="obj"></param> /// <param name="tipo"></param> private static void AddBando(GameObject obj, Bandos tipo) // Agrega un bando { Bando bando = obj.AddComponent <Bando>(); bando.tipo = tipo; }