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