public void SetTimer(BuffTimer timer, Attribute attribute)
    {
        timer.TimedModifier = this;
        switch (BuffApplyMethod)
        {
        case BuffApplyMethodType.Hold:
            attribute.AddModifier(this);
            timer.Duration = ModifierDuration;
            break;

        case BuffApplyMethodType.Ramp:
            timer.Duration         = RampDuration;
            timer.EventTickSeconds = ((float)RampDuration / GetValue(attribute.GetBaseValue(AttrValueType)));
            timer.TimerTick       += attribute.OnBuffTimerTick;
            break;

        case BuffApplyMethodType.Tick:
            timer.Duration         = ModifierDuration;
            timer.EventTickSeconds = 1f;
            timer.TimerTick       += attribute.OnBuffTimerTick;
            break;
        }
        timer.TimerFinished += attribute.OnBuffTimerFinished;
        timer.Run();
    }
Beispiel #2
0
        private void BuffIcons_Added(BuffIcon buffID, BuffInfo buff)
        {
            ArtBox gump = new ArtBox(BuffIcons.GetGumpID(buffID), isGump: true, vertical: table.RowCount == 0);

            if (buff.Duration != 0)
            {
                BuffTimer timer = new BuffTimer(gump, buff);
                gump.Tag = timer;
                timer.Start();
            }
            table.Controls.Add(gump);
        }
Beispiel #3
0
            } // end Update

            public void InsertBuff(BuffInfo buffInfo) {
                if (null == buffInfo) return;
                // end if
                for (int i = 0; i < buffList.Count; i++) {
                    if (buffList[i].buffInfo.buffID != buffInfo.buffID) continue;
                    // end if
                    buffList[i] = new BuffTimer(buffInfo);
                    return;
                } // end for
                buffList.Add(new BuffTimer(buffInfo));
                if (null == center) return;
                // end if
                center.Broadcast(CenterEvent.BuffChange);
            } // end InsertBuff
Beispiel #4
0
        private void BuffIcons_Removed(BuffIcon buffID)
        {
            ArtBox gump = table.Controls.OfType <ArtBox>().FirstOrDefault(g => g.ArtID == BuffIcons.GetGumpID(buffID));

            if (gump != null)
            {
                BuffTimer timer = gump.Tag as BuffTimer;
                if (timer != null)
                {
                    timer.Stop();
                }
                table.Controls.Remove(gump);
            }
        }
Beispiel #5
0
    public void OnBuffTimerFinished(TimedAttributeModifier modifier, BuffTimer timer)
    {
        timer.TimerFinished -= OnBuffTimerFinished;
        timer.TimerTick     -= OnBuffTimerTick;

        if (modifier.BuffApplyMethod == BuffApplyMethodType.Ramp)
        {
            IncrementValue(-modifier.GetValue(GetBaseValue(modifier.AttrValueType)), modifier.AttrValueType);
            modifier = new TimedAttributeModifier(modifier)
            {
                BuffApplyMethod = BuffApplyMethodType.Hold
            };
            modifier.SetTimer(timer, this);
        }
        else
        {
            RemoveModifier(modifier);
            GameObject.Destroy(timer);
        }
        EventManager.Instance.InvokeEvent(EventName.AttributesUpdated, new AttributesUpdatedEventArgs());
    }