Example #1
0
        private void DoTriggering(CTriggerMatch match, PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker)
        {
            if (match.TriggerCountMax > 0 && ++match.m_triggeredCounter > match.TriggerCountMax)
            {
                return;
            }
            if (!match.bCoolingDown)
            {
                match.IntoCoolingDown();
                if (match.DelayTime > 0)
                {
                    int num = Singleton <CTimerManager> .get_instance().AddTimer(match.DelayTime, 1, new CTimer.OnTimeUpHandler(this.OnDelayTriggerTimer), true);

                    if (num >= 0)
                    {
                        DebugHelper.Assert(!this.DelayTimeSeqMap.ContainsKey(num));
                        GlobalTrigger.CDelayMatch cDelayMatch = new GlobalTrigger.CDelayMatch();
                        cDelayMatch.AtkerHandle  = atker;
                        cDelayMatch.SrcHandle    = src;
                        cDelayMatch.TriggerMatch = match;
                        this.DelayTimeSeqMap.Add(num, cDelayMatch);
                    }
                }
                else
                {
                    this.DoTriggeringImpl(match, src, atker);
                }
            }
        }
Example #2
0
 private void OnDelayTriggerTimer(int inTimeSeq)
 {
     if (this.DelayTimeSeqMap.ContainsKey(inTimeSeq))
     {
         GlobalTrigger.CDelayMatch cDelayMatch = this.DelayTimeSeqMap.get_Item(inTimeSeq);
         if (cDelayMatch != null)
         {
             this.DoTriggeringImpl(cDelayMatch.TriggerMatch, cDelayMatch.SrcHandle, cDelayMatch.AtkerHandle);
         }
         this.DelayTimeSeqMap.Remove(inTimeSeq);
     }
     Singleton <CTimerManager> .get_instance().RemoveTimer(inTimeSeq);
 }