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