Пример #1
0
 private void DoTriggering(CTriggerMatch match, PoolObjHandle<ActorRoot> src, PoolObjHandle<ActorRoot> atker, object param)
 {
     if (((match.TriggerCountMax <= 0) || (++match.m_triggeredCounter <= match.TriggerCountMax)) && !match.bCoolingDown)
     {
         match.IntoCoolingDown();
         if (match.DelayTime > 0)
         {
             int key = Singleton<CTimerManager>.instance.AddTimer(match.DelayTime, 1, new CTimer.OnTimeUpHandler(this.OnDelayTriggerTimer), true);
             if (key >= 0)
             {
                 DebugHelper.Assert(!this.DelayTimeSeqMap.ContainsKey(key));
                 CDelayMatch match2 = new CDelayMatch {
                     AtkerHandle = atker,
                     SrcHandle = src,
                     ParamObj = param,
                     TriggerMatch = match
                 };
                 this.DelayTimeSeqMap.Add(key, match2);
             }
         }
         else
         {
             this.DoTriggeringImpl(match, src, atker, param);
         }
     }
 }
Пример #2
0
 private void OnDelayTriggerTimer(int inTimeSeq)
 {
     if (this.DelayTimeSeqMap.ContainsKey(inTimeSeq))
     {
         CDelayMatch match = this.DelayTimeSeqMap[inTimeSeq];
         if (match != null)
         {
             this.DoTriggeringImpl(match.TriggerMatch, match.SrcHandle, match.AtkerHandle, match.ParamObj);
         }
         this.DelayTimeSeqMap.Remove(inTimeSeq);
     }
     Singleton<CTimerManager>.instance.RemoveTimer(inTimeSeq);
 }