yyl
2026-02-09 5a4e34c8a85737c0fa5b5775122da31155cbaef3
Main/System/OpenServerActivity/OperationTimeHepler.cs
@@ -6,19 +6,22 @@
public class OperationTimeHepler : Singleton<OperationTimeHepler>
{
    public Dictionary<Operation, OperationBase> operationDict = new Dictionary<Operation, OperationBase>();
    public Dictionary<OperationType, OperationBase> operationDict = new Dictionary<OperationType, OperationBase>();
    public static StringBuilder textBuilder = new StringBuilder();
    public event Action<Operation> operationTimeUpdateEvent;
    public event Action<Operation> operationServerCloseEvent;//特殊情况下触发
    public event Action<Operation, int> operationEndEvent;//活动结束时间触发  第二个参数0--过活动时间触发  1--过活动天触发
    public event Action<Operation, int> operationStartEvent;//活动开始时间并且满足开启条件触发 第二个参数0--活动时间触发  1--活动天触发
    public event Action<OperationType> operationTimeUpdateEvent;
    public event Action<OperationType> operationServerCloseEvent;//特殊情况下触发
    public event Action<OperationType, int> operationEndEvent;//活动结束时间触发  第二个参数0--过活动时间触发  1--过活动天触发
    public event Action<OperationType, int> operationStartEvent;//活动开始时间并且满足开启条件触发 第二个参数0--活动时间触发  1--活动天触发
    public event Action<int> dayResetEvent;//活动重置事件0-0点 1-5点
    public event Action<Operation> operationAdvanceEvent;//活动在提前开启的时间内
    public event Action<OperationType> operationAdvanceEvent;//活动在提前开启的时间内
    public OperationTimeHepler()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerDataInitializeEvent;
        GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
        TimeMgr.Instance.OnHourEvent -= HourEvent;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
        GlobalTimeEvent.Instance.secondEvent += SecondEvent;
        TimeMgr.Instance.OnHourEvent += HourEvent;
@@ -38,30 +41,30 @@
        {
            return;
        }
        for (int i = 0; i < (int)Operation.max; i++)
        for (int i = 0; i < (int)OperationType.max; i++)
        {
            if (operationDict.ContainsKey((Operation)i))
            if (operationDict.ContainsKey((OperationType)i))
            {
                var operation = operationDict[(Operation)i];
                var operation = operationDict[(OperationType)i];
                if (!operation.inDateNotify && operation.SatisfyOpenCondition()
                    && operation.InDay(TimeUtility.ServerNow))
                {
                    operation.inDateNotify = true;
                    operation.stepDateNotify = false;
                    Debug.LogFormat("{0}  活动天开始", (Operation)i);
                    Debug.LogFormat("{0}  活动天开始", (OperationType)i);
                    if (operationStartEvent != null)
                    {
                        operationStartEvent((Operation)i, 1);
                        operationStartEvent((OperationType)i, 1);
                    }
                }
                else if (!operation.stepDateNotify && !operation.InDay(TimeUtility.ServerNow))
                {
                    operation.inDateNotify = false;
                    operation.stepDateNotify = true;
                    Debug.LogFormat("{0}  活动天结束", (Operation)i);
                    Debug.LogFormat("{0}  活动天结束", (OperationType)i);
                    if (operationEndEvent != null)
                    {
                        operationEndEvent((Operation)i, 1);
                        operationEndEvent((OperationType)i, 1);
                    }
                }
                if (!operation.inTimeNotify && operation.SatisfyOpenCondition()
@@ -69,10 +72,10 @@
                {
                    operation.inTimeNotify = true;
                    operation.stepTimeNotify = false;
                    Debug.LogFormat("{0}  活动时间开始", (Operation)i);
                    Debug.LogFormat("{0}  活动时间开始", (OperationType)i);
                    if (operationStartEvent != null)
                    {
                        operationStartEvent((Operation)i, 0);
                        operationStartEvent((OperationType)i, 0);
                    }
                }
                else if (!operation.stepTimeNotify && !operation.InTime(TimeUtility.ServerNow))
@@ -80,10 +83,10 @@
                    operation.inTimeNotify = false;
                    operation.stepTimeNotify = true;
                    operation.inAdvanceNotify = false;
                    Debug.LogFormat("{0}  活动时间结束", (Operation)i);
                    Debug.LogFormat("{0}  活动时间结束", (OperationType)i);
                    if (operationEndEvent != null)
                    {
                        operationEndEvent((Operation)i, 0);
                        operationEndEvent((OperationType)i, 0);
                    }
                }
@@ -91,10 +94,10 @@
                    && operation.InAdvanceTime(TimeUtility.ServerNow))
                {
                    operation.inAdvanceNotify = true;
                    Debug.LogFormat("{0}  活动提前开启", (Operation)i);
                    Debug.LogFormat("{0}  活动提前开启", (OperationType)i);
                    if (operationAdvanceEvent != null)
                    {
                        operationAdvanceEvent((Operation)i);
                        operationAdvanceEvent((OperationType)i);
                    }
                }
            }
@@ -684,7 +687,7 @@
    //     }
    // }
    public void ForceStopOperation(Operation operationType)
    public void ForceStopOperation(OperationType operationType)
    {
        if (operationDict.ContainsKey(operationType))
        {
@@ -701,12 +704,12 @@
        }
    }
    public bool TryGetOperationTime(Operation type, out OperationBase operation)
    public bool TryGetOperationTime(OperationType type, out OperationBase operation)
    {
        return operationDict.TryGetValue(type, out operation);
    }
    public bool TryGetOperation<T>(Operation type, out T operation) where T : OperationBase
    public bool TryGetOperation<T>(OperationType type, out T operation) where T : OperationBase
    {
        operation = null;
        if (operationDict.ContainsKey(type))
@@ -717,7 +720,7 @@
        return false;
    }
    public bool InOperationTime(Operation type)
    public bool InOperationTime(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -727,7 +730,7 @@
        return false;
    }
    public bool InOperationTime(Operation type, DateTime time)
    public bool InOperationTime(OperationType type, DateTime time)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -737,7 +740,7 @@
        return false;
    }
    public bool InOperationJoinTime(Operation type, DateTime time)
    public bool InOperationJoinTime(OperationType type, DateTime time)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -747,7 +750,7 @@
        return false;
    }
    public bool InOperationDay(Operation type)
    public bool InOperationDay(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -757,7 +760,7 @@
        return false;
    }
    public int GetOperationSurplusTime(Operation type)
    public int GetOperationSurplusTime(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -767,7 +770,7 @@
        return 0;
    }
    public bool InOperationAdvance(Operation type)
    public bool InOperationAdvance(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -777,7 +780,7 @@
        return false;
    }
    public int GetOperationSecondsBeforeStart(Operation type)
    public int GetOperationSecondsBeforeStart(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -787,7 +790,7 @@
        return 0;
    }
    public bool SatisfyOpenCondition(Operation type)
    public bool SatisfyOpenCondition(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -797,7 +800,7 @@
        return false;
    }
    public bool SatisfyOpenCondition(Operation type, DateTime time)
    public bool SatisfyOpenCondition(OperationType type, DateTime time)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -808,7 +811,7 @@
    }
    //活动开启中,有参与进行时间段
    public bool SatisfyJoinCondition(Operation type, DateTime time)
    public bool SatisfyJoinCondition(OperationType type, DateTime time)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -818,7 +821,7 @@
        return false;
    }
    public bool IsPrepareTime(Operation type, DateTime time)
    public bool IsPrepareTime(OperationType type, DateTime time)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -828,7 +831,7 @@
        return false;
    }
    public bool SatisfyAdvanceCondition(Operation type)
    public bool SatisfyAdvanceCondition(OperationType type)
    {
        OperationBase operation;
        if (TryGetOperationTime(type, out operation))
@@ -838,7 +841,7 @@
        return false;
    }
    public void ProcessConditionError(Operation type)
    public void ProcessConditionError(OperationType type)
    {
        if (SatisfyOpenCondition(type))
        {
@@ -853,7 +856,7 @@
            }
            else if (!operation.SatisfyOpenCondition())
            {
                SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("OperationLevelLimit_", type), operation.limitLv);
                SysNotifyMgr.Instance.ShowTip(StringUtility.Concat("OperationLevelLimit_", type.ToString()), operation.limitLv);
            }
        }
        else
@@ -987,13 +990,13 @@
    {
        if (showYear)
        {
            return StringUtility.Contact(year, "/", month, "/", day);
            return $"{year}/{month}/{day}";
        }
        return $"{month}/{day}";
        return StringUtility.Contact(month, "/", day);
        //var yearString = StringUtility.Contact(year, Language.Get("Year"));
        //return StringUtility.Contact(showYear ? yearString : string.Empty, month, Language.Get("Month"), day, Language.Get("Day"));
        //var yearString = StringUtility.Concat(year, Language.Get("Year"));
        //return StringUtility.Concat(showYear ? yearString : string.Empty, month, Language.Get("Month"), day, Language.Get("Day"));
    }
    public static int operator -(OperationDate x, OperationDate y)
@@ -1032,7 +1035,7 @@
    public override string ToString()
    {
        return StringUtility.Contact(startHour.ToString("D2"), ":", startMinute.ToString("D2"),
        return StringUtility.Concat(startHour.ToString("D2"), ":", startMinute.ToString("D2"),
            "-", endHour.ToString("D2"), ":", endMinute.ToString("D2"));
    }
@@ -1043,7 +1046,7 @@
    }
}
public enum Operation
public enum OperationType
{
    MultipleExp,
    ConsumeRebate,