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