예제 #1
0
        /// <summary>
        /// <para>Fija el valor</para>
        /// </summary>
        /// <param name="tipo"></param>
        /// <param name="value"></param>
        /// <param name="permitirExcepcion"></param>
        public void SetValue(TipoStats tipo, int value, bool permitirExcepcion)        // Fija el valor
        {
            int valorAntiguo = this[tipo];

            // Comprobar los valores
            if (valorAntiguo == value)
            {
                return;
            }

            if (permitirExcepcion)
            {
                // Permitir excepciones a la regla aquí
                CambioValorExcepcion exc = new CambioValorExcepcion(valorAntiguo, value);

                // La notificacion es unica por tipo de stats
                this.EnviarNotificacion(CuandoCambieNotificacion(tipo), exc);


                // ¿Algo modifico el valor?
                value = Mathf.FloorToInt(exc.GetValorModificador());

                // ¿Algo anulo el cambio?
                if (exc.Toggle == false || value == valorAntiguo)
                {
                    return;
                }
            }

            data[(int)tipo] = value;
            this.EnviarNotificacion(CuandoCambioNotificacion(tipo), valorAntiguo);
        }
예제 #2
0
        /// <summary>
        /// <para>Cuando el contador cambia</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnContadorCambia(object sender, object args)        // Cuando el contador cambia
        {
            CambioValorExcepcion exc = args as CambioValorExcepcion;
            MultDeltaModificador m   = new MultDeltaModificador(0, 2);

            exc.AddModificador(m);
        }
예제 #3
0
        /// <summary>
        /// <para>Comprobar el cambio de counter</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnStatCounterCambia(object sender, object args)        // Comprobar el cambio de counter
        {
            // No permitir que una unidad KO incremente el contador de turno
            CambioValorExcepcion exc = args as CambioValorExcepcion;

            if (exc.toValue > exc.fromValue)
            {
                exc.FlipToggle();
            }
        }
예제 #4
0
        /// <summary>
        /// <para>Cuando cambia la vida</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnHPCambia(object sender, object args)        // Cuando cambia la vida
        {
            CambioValorExcepcion vce = args as CambioValorExcepcion;

            vce.AddModificador(new ClampValorModificador(int.MaxValue, 0, stats[TipoStats.MHP]));
        }
예제 #5
0
        /// <summary>
        /// <para>Cuando el counter cambia</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnCounterCambia(object sender, object args)        // Cuando el counter cambia
        {
            CambioValorExcepcion exc = args as CambioValorExcepcion;

            exc.FlipToggle();
        }
예제 #6
0
        /// <summary>
        /// <para>Cuando la experiencia cambia</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnExpCambia(object sender, object args)        // Cuando la experiencia cambia
        {
            CambioValorExcepcion vce = args as CambioValorExcepcion;

            vce.AddModificador(new ClampValorModificador(int.MaxValue, EXP, maxExperiencia));
        }