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