Files
ft/Client/Assets/Scripts/Event/IEventData.cs
2026-06-29 21:18:33 +08:00

49 lines
1.5 KiB
C#

using System;
using asap.core;
using cfg;
using GameCore;
using Newtonsoft.Json;
namespace game
{
public interface IEventData
{
public int EventID { get; set; }
public void SetData(IEventData data);
public float InflationRate { get; set; }
}
public abstract class AEventData : IEventData
{
public int EventID { get; set; }
public float InflationRate{get; set;}
public virtual void SetData(IEventData data)
{
EventID = data.EventID;
InflationRate=data.InflationRate;
}
public virtual void RefreshCache()
{
}
#region jsonIgnore
[JsonIgnore] public virtual bool IsActive => EventID > 0 && RemainingTime.TotalSeconds > 0&&StartTime<=ZZTimeHelper.UtcNow();
[JsonIgnore] private Tables _tables;
[JsonIgnore] public Tables Tables => _tables ??= GContext.container.Resolve<Tables>();
[JsonIgnore] public FishingEvent FishingEvent => Tables.TbFishingEvent.GetOrDefault(EventID);
[JsonIgnore]
public FishingEventCycleItem CycleItem =>
Tables.TbFishingEventCycleItem.GetOrDefault(FishingEvent?.RedirectID ?? 0);
[JsonIgnore] public DateTime EndTime => GContext.container.Resolve<FishingEventData>().GetEventEndTime(EventID);
[JsonIgnore] private DateTime StartTime => DateTime.Parse((FishingEvent.TimeDefinition as LimitedTime)?.StartTime);
[JsonIgnore] public TimeSpan RemainingTime => EndTime - ZZTimeHelper.UtcNow().UtcNowOffset();
#endregion
}
}