private IEnumerator TimeBasedModifierCountdown(BaseAttribute sender, TimeBasedModifier modifier) { while (modifier.RemainingTime > 0) { yield return(null); } sender.RemoveModifier(modifier); }
public void AttributeSignalTest() { _modifierAdded = 0; _modifierRemoved = 0; Body.OnModifierAdded += new ModifierAddedHandler(ModifierAdded); Body.OnModifierRemoved += new ModifierRemovedHandler(ModifierRemoved); // Change the value and test the received signal Body.OnValueChanged += new ValueChangedHandler(ValueChangedDemo); Body.Value = 100; Assert.AreEqual(1, _valueChangedEventTriggered); // Adding a modifier triggers the signal var modifier = new TimeBasedModifier("StrengthBuff", 10, 10); Body.AddModifier(modifier); Assert.AreEqual(1, _modifierAdded); Assert.AreEqual(2, _valueChangedEventTriggered); // Removing a modifier triggers the signal Body.RemoveModifier(modifier); Assert.AreEqual(3, _valueChangedEventTriggered); Assert.AreEqual(1, _modifierRemoved); // Secondary Attributes work the same Level.OnValueChanged += new ValueChangedHandler(ValueChangedDemo); Experience.Value = 100; Assert.AreEqual(4, _valueChangedEventTriggered); // Adding a modifier triggers the signal Experience.AddModifier(modifier); Assert.AreEqual(5, _valueChangedEventTriggered); // Removing a modifier triggers the signal Experience.RemoveModifier(modifier); Assert.AreEqual(6, _valueChangedEventTriggered); // Maximum and minimum signals are emitted too. Body.OnMaxReached += new MaxReachedHandler(MaxReachedDemo); Body.Value = 999; Assert.AreEqual(1, _maxReachedEventTriggered); Body.OnMinReached += new MinReachedHandler(MinReachedDemo); Body.Value = -100; Assert.AreEqual(1, _minReachedEventTriggered); // VolumeAttribute Test Life.OnValueChanged += new ValueChangedHandler(ValueChangedDemo); Life.Value = 10; Assert.AreEqual(9, _valueChangedEventTriggered); Life.OnMaxReached += new MaxReachedHandler(MaxReachedDemo); Life.Value = 999; Assert.AreEqual(2, _maxReachedEventTriggered); Life.OnMinReached += new MinReachedHandler(MinReachedDemo); Life.Value = -100; Assert.AreEqual(2, _minReachedEventTriggered); Body.BaseValue = 200; Assert.AreEqual(14, _valueChangedEventTriggered); }