Exemplo n.º 1
0
 private IEnumerator TimeBasedModifierCountdown(BaseAttribute sender, TimeBasedModifier modifier)
 {
     while (modifier.RemainingTime > 0)
     {
         yield return(null);
     }
     sender.RemoveModifier(modifier);
 }
Exemplo n.º 2
0
        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);
        }