protected override void OnTick() { ArrayList requeue = null; m_LastTick = DateTime.UtcNow; if (m_Queue != null && m_Queue.Count > 0) { this.Interval = TimeSpan.FromMilliseconds(Config.GetInt("ObjectDelay")); while (m_Queue.Count > 0) { Serial s = (Serial)m_Queue.Peek(); if (s == Serial.Zero) // dragdrop action { DragDropManager.ProcStatus status = DragDropManager.ProcessNext(m_Queue.Count - 1); if (status != DragDropManager.ProcStatus.KeepWaiting) { m_Queue.Dequeue(); // if not waiting then dequeue it if (status == DragDropManager.ProcStatus.ReQueue) { m_Queue.Enqueue(s); } } if (status == DragDropManager.ProcStatus.KeepWaiting || status == DragDropManager.ProcStatus.Success) { break; // don't process more if we're waiting or we just processed something } } else { m_Queue.Dequeue(); ClientCommunication.SendToServer(new DoubleClick(s)); break; } } if (requeue != null) { for (int i = 0; i < requeue.Count; i++) { m_Queue.Enqueue(requeue[i]); } } } else { Stop(); if (m_Total > 1 && World.Player != null) { World.Player.SendMessage(LocString.QueueFinished, m_Total, ((DateTime.UtcNow - m_StartTime) - this.Interval).TotalSeconds); } m_Last = Serial.Zero; m_Total = 0; } }
protected void OnTick(object state, bool timeout) { List <Serial> requeue = null; m_LastTick = DateTime.Now; if (m_Queue != null && m_Queue.Count > 0) { while (m_Queue.Count > 0) { Serial s = m_Queue.Peek(); if (s == Serial.Zero) // dragdrop action { DragDropManager.ProcStatus status = DragDropManager.ProcessNext(m_Queue.Count - 1); if (status != DragDropManager.ProcStatus.KeepWaiting && m_Queue.Count > 0) { m_Queue.Dequeue(); // if not waiting then dequeue it if (status == DragDropManager.ProcStatus.ReQueue) { m_Queue.Enqueue(s); } } if (status == DragDropManager.ProcStatus.KeepWaiting || status == DragDropManager.ProcStatus.Success) { break; // don't process more if we're waiting or we just processed something } } else { m_Queue.Dequeue(); Assistant.Client.Instance.SendToServer(new DoubleClick(s)); break; } } if (requeue != null) { for (int i = 0; i < requeue.Count; i++) { m_Queue.Enqueue(requeue[i]); } } } else { Stop(); // if (m_Total > 1 && World.Player != null) // World.Player.SendMessage(LocString.QueueFinished, m_Total, ((DateTime.Now - m_StartTime) - this.Interval).TotalSeconds); m_Last = Serial.Zero; m_Total = 0; } }