Example #1
0
            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;
                }
            }
Example #2
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;
                }
            }