private void ProcessEvents()
 {
     lock (eventsToProcess)
     {
         foreach (Tuple <string, EventArgs> eventTuple in eventsToProcess)
         {
             if (eventTuple.Item1 == "pixels")
             {
                 PixelPacket pixel = eventTuple.Item2 as PixelPacket;
                 Color       actualColor;
                 if (palette.ContainsKey(curCanvas))
                 {
                     actualColor = palette[curCanvas][pixel.color];
                 }
                 else
                 {
                     actualColor = palette[7][pixel.color];
                 }
                 if (pixel.x < 0 || pixel.x >= canvas.Width || pixel.y < 0 || pixel.y >= canvas.Height)
                 {
                     continue;
                 }
                 Color border = borders.GetPixel(pixel.x, pixel.y);
                 if (!(border.R == 204 && border.G == 204 && border.B == 204))
                 {
                     canvas.SetPixel(pixel.x, pixel.y, actualColor);
                 }
             }
         }
         eventsToProcess.Clear();
     }
 }
Exemple #2
0
        public override bool Equals(object obj)
        {
            if (!(obj is PixelPacket))
            {
                return(false);
            }
            PixelPacket packet = obj as PixelPacket;

            return(packet.x == x && packet.y == y && packet.userId == userId && packet.color == color && packet.boardId == boardId);
        }
        private void OnSocketEvent(string type, EventArgs args, Guid user)
        {
            if (user != Guid.Empty)
            {
                if (type == "throw.error" && (args as ErrorPacket).id == 11)
                {
                    var entry = users.Where((a) => a.Id == user).FirstOrDefault();
                    entry?.Session.Stall(1000);
                    if (entry != null)
                    {
                        Logger.Warning("Stalling {0} for 1000 ms", entry.Client.Username);
                    }
                }

                if (type == "tokens")
                {
                    (args as TokenPacket).id = user;
                }
            }

            if (user != currentActiveUser && type != "tokens" && type != "nickname")
            {
                var  curactive    = users.Where((a) => a.Id == currentActiveUser).ToList();
                var  curUsers     = users.Where((a) => a.Id == currentActiveUser);
                var  actUsers     = users.Where((a) => a.Id == user);
                bool isCurPremium = curUsers.Count() > 0 ? curUsers.FirstOrDefault().Client.Premium : false;
                bool isPremium    = actUsers.Count() > 0 ? actUsers.FirstOrDefault().Client.Premium : false;
                if (curactive.Count == 0 || curactive[0].Client.Status != Status.OPEN || (!isCurPremium && isPremium))
                {
                    currentActiveUser = user;
                    Logger.Info("Listening to {0}", user);
                }
                else if (!(type == "pixels" && (args as PixelPacket).instantPixel))
                {
                    return;
                }
            }

            if (type == "pixels")
            {
                PixelPacket px = args as PixelPacket;
                if (placementBehaviour.GetMode() == PlacementMode.TOPDOWN)
                {
                    (placementBehaviour as TopDownPlacementBehaviour).ResetResendDelay(px.x, px.y);
                }

                Color border;

                border = borders.GetPixel(px.x, px.y);


                if (!(border.R == 204 && border.G == 204 && border.B == 204))
                {
                    guiUpdater.PushEvent(type, args);
                }
                if (px.instantPixel)
                {
                    return;
                }
            }
            else
            {
                guiUpdater.PushEvent(type, args);
            }

            lock (eventsToProcess)
            {
                eventsToProcess.Add(new Tuple <string, EventArgs>(type, args));
            }
        }
 private void CheckNewPixel(PixelPacket pixel)
 {
 }
Exemple #5
0
        public void ProcessEvent(string type, EventArgs args)
        {
            if (type == "chat.user.message")
            {
                var message = args as ChatMessagePacket;

                if (message.chat != "0" && message.chat != DataExchange.CanvasId.ToString())
                {
                    return;
                }

                string formatted = String.Format("{0}: ", message.username);
                if (!String.IsNullOrWhiteSpace(message.guild))
                {
                    formatted = formatted.Insert(0, String.Format("<{0}>", message.guild));
                }
                if (message.admin)
                {
                    formatted = formatted.Insert(0, "[🔧]");
                }
                if (message.mod)
                {
                    formatted = formatted.Insert(0, "[🔨]");
                }
                if (message.icon == "mvp-moderator")
                {
                    formatted = formatted.Insert(0, "[mvp]");
                }
                if (message.premium)
                {
                    formatted = formatted.Insert(0, "[💎]");
                }
                if (message.boardId != DataExchange.CanvasId)
                {
                    formatted = formatted.Insert(0, "[" + message.boardId.ToString() + "]");
                }

                int boardId = message.boardId;
                if (!palette.ContainsKey(boardId))
                {
                    boardId = 7;
                }
                Color color = palette[boardId][message.color];

                ChatType chatType = ChatType.Global;
                switch (message.chatType)
                {
                case "channel":
                    if (message.chat == "0")
                    {
                        chatType = ChatType.Global;
                    }
                    else
                    {
                        chatType = ChatType.Local;
                    }
                    break;

                case "guild":
                    chatType = ChatType.Guild;
                    break;

                case "whisper":
                    chatType = ChatType.Whispers;
                    break;
                }

                DataExchange.PushChatMessage(formatted, message.message, chatType, System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));
            }
            else if (type == "pixels")
            {
                PixelPacket pixel   = args as PixelPacket;
                int         boardId = pixel.boardId;
                if (!palette.ContainsKey(boardId))
                {
                    boardId = 7;
                }
                Color actualColor = palette[boardId][pixel.color];
                DataExchange.PushPixel(pixel.x, pixel.y, actualColor, pixel.boardId, pixel.userId, pixel.instantPixel);
            }
            else if (type == "manager.status")
            {
                UserStatusData data = args as UserStatusData;
                DataExchange.PushUserStatus(data);
            }
            else if (type == "manager.taskenable")
            {
                TaskEnableStateData data = args as TaskEnableStateData;
                DataExchange.PushTaskEnabledState(data);
            }
            else if (type == "nickname")
            {
                NicknamePacket data = args as NicknamePacket;
                DataExchange.PushNewUsername(data.id, data.nickname);
            }
            else if (type == "tokens")
            {
                TokenPacket data = args as TokenPacket;
                DataExchange.PushTokens(data.phpSessId, data.authToken, data.id);
            }
        }