コード例 #1
0
        internal void OnCycle()
        {
            if (mGotRollers)
            {
                try
                {
                    room.SendMessage(CycleRollers());
                }
                catch (Exception e)
                {
                    Logging.LogThreadException(e.ToString(), "rollers for room with ID " + room.RoomId);
                    mGotRollers = false;
                }
            }

            if (roomItemUpdateQueue.Count > 0)
            {
                List <RoomItem> addItems = new List <RoomItem>();
                lock (roomItemUpdateQueue.SyncRoot)
                {
                    while (roomItemUpdateQueue.Count > 0)
                    {
                        RoomItem item = (RoomItem)roomItemUpdateQueue.Dequeue();
                        item.ProcessUpdates();

                        if (item.IsTrans || item.UpdateCounter > 0)
                        {
                            addItems.Add(item);
                        }
                    }

                    foreach (RoomItem item in addItems)
                    {
                        roomItemUpdateQueue.Enqueue(item);
                    }
                }
            }

            mFloorItems.OnCycle();
            mWallItems.OnCycle();
        }