ModernUO/Projects/UOContent/Engines/BuffIcons/BuffInfo.cs

65 lines
1.6 KiB
C#

using System;
using Server.Mobiles;
namespace Server.Engines.BuffIcons;
public class BuffInfo
{
private TimerExecutionToken _timerToken;
public BuffInfo(
BuffIcon iconID, int titleCliloc, TimeSpan duration = default, TextDefinition args = null,
bool retainThroughDeath = false
) : this(iconID, titleCliloc, titleCliloc + 1, duration, args, retainThroughDeath)
{
}
public BuffInfo(
BuffIcon iconID, int titleCliloc, int secondaryCliloc, TimeSpan duration = default, TextDefinition args = null,
bool retainThroughDeath = false
)
{
ID = iconID;
TitleCliloc = titleCliloc;
SecondaryCliloc = secondaryCliloc;
Duration = duration;
Args = args;
RetainThroughDeath = retainThroughDeath;
}
public static bool Enabled { get; private set; }
public BuffIcon ID { get; }
public int TitleCliloc { get; }
public int SecondaryCliloc { get; }
public DateTime StartTime { get; private set; }
public TimeSpan Duration { get; }
public bool RetainThroughDeath { get; }
public TextDefinition Args { get; }
public static void Configure()
{
Enabled = ServerConfiguration.GetOrUpdateSetting("buffIcons.enable", Core.ML);
}
public void StartTimer(PlayerMobile m)
{
if (Duration != TimeSpan.Zero)
{
StartTime = Core.Now;
var id = ID;
Timer.StartTimer(Duration, () => m.RemoveBuff(id), out _timerToken);
}
}
public void StopTimer()
{
_timerToken.Cancel();
}
}