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