You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.9 KiB

using System.Collections.Generic;
using ProtoCSStruct;
using Sog;
namespace Game
{
public abstract class TimeTrigger
{
private static readonly Dictionary<ActivityTimeType, TimeTrigger> TimeTriggers = new();
public static void Register()
{
TimeTriggers[ActivityTimeType.FixedTime] = new FixedTime();
TimeTriggers[ActivityTimeType.UnlockTime] = new UnlockSystemTime();
TimeTriggers[ActivityTimeType.SeverTime] = new SeverTime();
TimeTriggers[ActivityTimeType.LoopDayTime] = new LoopDayTime();
TimeTriggers[ActivityTimeType.LoopSeverTime] = new LoopSeverTime();
}
public static TimeTrigger GetTimeTrigger(ActivityTimeType timeType)
{
return !TimeTriggers.ContainsKey(timeType) ? null : TimeTriggers[timeType];
}
public ActivityState GetActivityState(int actId, PlayerOnGame player, int realmId = -1)
{
var desc = ActivityDescMgr.Instance.GetConfig(actId);
if (desc == null)
{
return ActivityState.ActivityNotStarted;
}
if (player == null)
{
return ActivityState.ActivityNotStarted;
}
if (desc.unlockId != 0)
{
var unlock = SystemUnlockSvc.IsUnlockSys(player, desc.unlockId);
if (!unlock)
{
return ActivityState.ActivityNotStarted;
}
}
return GetState(actId, player, realmId);
}
protected abstract ActivityState GetState(int actId, PlayerOnGame player, int realmId = -1);
public abstract long GetLastTimeToEnd(int actId, PlayerOnGame player, int realmId = -1);
public abstract long GetActOpenTimeDate(int actId, PlayerOnGame player, int realmId = -1);
}
}