ModernUO/Projects/UOContent/Engines/Events/ScheduledEvent.cs

32 lines
917 B
C#

using System;
namespace Server.Engines.Events;
public abstract class ScheduledEvent : BaseScheduledEvent
{
public IRecurrencePattern Recurrence { get; }
public TimeOnly Time { get; }
public DateTime EndDate { get; }
public ScheduledEvent(TimeOnly time, IRecurrencePattern recurrence = null)
: this(time, DateTime.MaxValue, recurrence)
{
}
public ScheduledEvent(
TimeOnly time,
DateTime endOn,
IRecurrencePattern recurrence = null
)
{
Time = time;
Recurrence = recurrence;
EndDate = endOn == DateTime.MaxValue || endOn.Kind == DateTimeKind.Utc ? endOn : endOn.LocalToUtc(TimeZone);
}
protected override DateTime GetNextOccurrence(DateTime after)
{
var next = Recurrence?.GetNextOccurrence(after, Time, TimeZone) ?? DateTime.MaxValue;
return next >= EndDate ? DateTime.MaxValue : next;
}
}