Ejemplo n.º 1
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// 运行事件
        /// </summary>
        /// <param name=string.Empty></param>
        /// <returns></returns>
        /// -----------------------------------------------------------------------------
        public void Run()
        {
            if (m_Mode == TIMER_MODE.DELAYTIME)
            {
                if (Time.realtimeSinceStartup - m_StartTime > m_duration)
                {
                    if (this.m_TimerEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerEvent.Target))
                    {
                        try
                        {
                            this.m_TimerEvent();
                        }
                        catch (System.Exception ex)
                        {
                            TimerManager.Destroy(this.m_Name);
                            LogSystem.LogError("Time event catch 1", ex.ToString());
                        }
                    }
                    else if (this.m_TimerArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerArgsEvent.Target))
                    {
                        try
                        {
                            this.m_TimerArgsEvent(m_Args);
                        }
                        catch (System.Exception ex)
                        {
                            TimerManager.Destroy(this.m_Name);
                            LogSystem.LogError("Time event catch 1", ex.ToString());
                        }
                    }
                    TimerManager.Destroy(this.m_Name);
                }
                return;
            }
            else if (m_Mode == TIMER_MODE.COUNTTIME)
            {
                float lastTime = Time.realtimeSinceStartup - m_time;
                if (lastTime > 1.0f)
                {
                    m_time = Time.realtimeSinceStartup;
                    try
                    {
                        if (this.m_TimerCountArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerCountArgsEvent.Target))
                        {
                            this.m_TimerCountArgsEvent(Mathf.CeilToInt(this.TimeLeft), m_Args);
                        }
                    }
                    catch (System.Exception ex)
                    {
                        TimerManager.Destroy(this.m_Name);
                        LogSystem.LogError("Time event catch2 ", ex.ToString());
                    }

                    if (this.TimeLeft <= 0f)
                    {
                        TimerManager.Destroy(this.m_Name);
                    }
                }
                return;
            }

            if (this.TimeLeft > 0.0f)
            {
                return;
            }

            try
            {
                if (this.m_TimerEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerEvent.Target))
                {
                    this.m_TimerEvent();
                }

                if (this.m_TimerArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerArgsEvent.Target))
                {
                    this.m_TimerArgsEvent(m_Args);
                }
            }
            catch (System.Exception ex)
            {
                TimerManager.Destroy(this.m_Name);
                LogSystem.LogError("Time event catch3", ex.ToString());
            }

            if (m_Mode == TIMER_MODE.NORMAL)
            {
                Destroy(this.m_Name);
            }
            else
            {
                m_StartTime = Time.realtimeSinceStartup + this.TimeLeft;
            }
        }
Ejemplo n.º 2
0
 public void Run()
 {
     if (this.m_Mode == TimerManager.TIMER_MODE.DELAYTIME)
     {
         if (Time.realtimeSinceStartup - this.m_StartTime > this.m_duration)
         {
             if (this.m_TimerEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerEvent.Target))
             {
                 try
                 {
                     this.m_TimerEvent();
                 }
                 catch (Exception ex)
                 {
                     TimerManager.DestroyTimer(this.m_Name);
                     LogSystem.LogError(new object[]
                     {
                         "Time event catch 1",
                         ex.ToString()
                     });
                 }
             }
             else if (this.m_TimerArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerArgsEvent.Target))
             {
                 try
                 {
                     this.m_TimerArgsEvent(this.m_Args);
                 }
                 catch (Exception ex2)
                 {
                     TimerManager.DestroyTimer(this.m_Name);
                     LogSystem.LogError(new object[]
                     {
                         "Time event catch 1",
                         ex2.ToString()
                     });
                 }
             }
             TimerManager.DestroyTimer(this.m_Name);
         }
         return;
     }
     if (this.m_Mode == TimerManager.TIMER_MODE.COUNTTIME)
     {
         float num = Time.realtimeSinceStartup - this.m_time;
         if (num > 1f)
         {
             this.m_time = Time.realtimeSinceStartup;
             try
             {
                 if (this.m_TimerCountArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerCountArgsEvent.Target))
                 {
                     this.m_TimerCountArgsEvent(Mathf.CeilToInt(this.TimeLeft), this.m_Args);
                 }
             }
             catch (Exception ex3)
             {
                 TimerManager.DestroyTimer(this.m_Name);
                 LogSystem.LogError(new object[]
                 {
                     "Time event catch2 ",
                     ex3.ToString()
                 });
             }
             if (this.TimeLeft <= 0f)
             {
                 TimerManager.DestroyTimer(this.m_Name);
             }
         }
         return;
     }
     if (this.TimeLeft > 0f)
     {
         return;
     }
     try
     {
         if (this.m_TimerEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerEvent.Target))
         {
             this.m_TimerEvent();
         }
         if (this.m_TimerArgsEvent != null && AsyncTrigger.IsTargetValid(this.m_TimerArgsEvent.Target))
         {
             this.m_TimerArgsEvent(this.m_Args);
         }
     }
     catch (Exception ex4)
     {
         TimerManager.DestroyTimer(this.m_Name);
         LogSystem.LogError(new object[]
         {
             "Time event catch3",
             ex4.ToString()
         });
     }
     if (this.m_Mode == TimerManager.TIMER_MODE.NORMAL)
     {
         TimerManager.DestroyTimer(this.m_Name);
     }
     else
     {
         this.m_StartTime = Time.realtimeSinceStartup;
     }
 }