public string SetTimeout(int delay, ScriptTimerHandler callback, bool loop = false)
        {
            if (w != null)
            {
                ScriptTimer timer = w.CreateTimer(this, delay, loop);

                if (timer == null)
                {
                    return(null);
                }

                ((ILease)timer.GetLifetimeService()).Register(w);

                if (!TimerHandlers.ContainsKey(timer))
                {
                    TimerHandlers.Add(timer, callback);
                }
                //TimerHandlers[timer] = callback;

                timer.Start();

                return(timer.ID);
            }

            return(null);
        }
 internal void RemoveScriptTimerHandler(ScriptTimer timer)
 {
     if (TimerHandlers.ContainsKey(timer))
     {
         TimerHandlers.Remove(timer);
     }
 }
        internal bool CallScriptTimerHandler(ScriptTimer timer)
        {
            if (TimerHandlers.ContainsKey(timer))
            {
                TimerHandlers[timer](timer);

                return(true);
            }

            return(false);
        }
Example #4
0
        internal ScriptTimer CreateTimer(ServerScript caller, int delay, bool loop = false)
        {
            ScriptTimer st = new ScriptTimer(caller, delay, (timer) => { caller.CallScriptTimerHandler(timer); }, loop);

            return(st.caller == caller ? st : null);
        }