/// <summary> /// <para>Quita una condicion</para> /// </summary> public virtual void Remove() // Quita una condicion { EstadoUnidad estado = GetComponentInParent <EstadoUnidad>(); if (estado) { estado.Remove(this); } }
/// <summary> /// <para>Cuando el HP cambia</para> /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void OnHPCambiaNotificacion(object sender, object args) // Cuando el HP cambia { Stats stats = sender as Stats; if (stats[TipoStats.HP] == 0) { EstadoUnidad estado = stats.GetComponentInChildren <EstadoUnidad>(); CondicionComparacionStats condicion = estado.Add <EstadoEfectoKO, CondicionComparacionStats>(); condicion.Init(TipoStats.HP, 0, condicion.IgualA); } }
/// <summary> /// <para>Aplica el damage</para> /// </summary> /// <param name="target">Area</param> public override int OnAplicar(Area target) { Unidad defensor = target.contenido.GetComponent <Unidad>(); EstadoUnidad estado = defensor.GetComponentInChildren <EstadoUnidad>(); DuracionCondicionEstadoUnidad[] candidatos = estado.GetComponentsInChildren <DuracionCondicionEstadoUnidad>(); for (int i = candidatos.Length - 1; i >= 0; --i) { EfectoEstadoUnidad efecto = candidatos[i].GetComponentInParent <EfectoEstadoUnidad>(); if (Tipos.Contains(efecto.GetType())) { candidatos[i].Remove(); } } return(0); }
/// <summary> /// <para>Aplica el damage</para> /// </summary> /// <param name="target">Area</param> public override int OnAplicar(Area target) // Aplica el damage { Type tipoStatus = Type.GetType(nombreStatus); if (tipoStatus == null || !tipoStatus.IsSubclassOf(typeof(EfectoEstadoUnidad))) { Debug.LogError("EfectoEstadoUnidad Invalido"); return(0); } MethodInfo mi = typeof(EstadoUnidad).GetMethod("Add"); Type[] tipos = new Type[] { tipoStatus, typeof(DuracionCondicionEstadoUnidad) }; MethodInfo constructed = mi.MakeGenericMethod(tipos); EstadoUnidad status = target.contenido.GetComponent <EstadoUnidad>(); object retValue = constructed.Invoke(status, null); DuracionCondicionEstadoUnidad condicion = retValue as DuracionCondicionEstadoUnidad; condicion.duracion = duracion; return(0); }