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