コード例 #1
0
        /// <summary>
        /// <para>Quita una condicion</para>
        /// </summary>
        public virtual void Remove()        // Quita una condicion
        {
            EstadoUnidad estado = GetComponentInParent <EstadoUnidad>();

            if (estado)
            {
                estado.Remove(this);
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
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);
        }