private void WebSocket_OnMessage(object sender, MessageEventArgs e) { byte[] data = e.RawData; if (data.Length == 0) { return; } if (data[0] == (byte)Opcode.PixelUpdated) { logger.LogDebug($"WebSocket_OnMessage(): got pixel update {DataToString(data)}"); byte chunkX = data[1]; byte chunkY = data[2]; byte relativeY = data[4]; byte relativeX = data[5]; byte color = data[6]; PixelChangedEventArgs args = new PixelChangedEventArgs { Chunk = (chunkX, chunkY), Pixel = (relativeX, relativeY), Color = (EarthPixelColor)color, DateTime = DateTime.Now }; logger.LogDebug($"WebSocket_OnMessage(): pixel update: {args.Color} at {args.Chunk}:{args.Pixel}"); OnPixelChanged?.Invoke(this, args); } else if (!listeningMode && data[0] == (byte)Opcode.Cooldown) { logger.LogDebug($"WebSocket_OnMessage(): got cooldown {DataToString(data)}"); if (data[1] + data[2] > 0) { logger.LogInfo($"Current cooldown: {(data[1] << 8) + data[2]}"); } } else { logger.LogDebug($"WebSocket_OnMessage(): opcode {(Opcode)data[0]}, ignoring"); } }
private void WebSocket_OnMessage(object sender, MessageEventArgs e) { byte[] buffer = e.RawData; if (buffer.Length == 0) { return; } if (buffer[0] == pixelUpdatedOpcode) { byte chunkX = buffer[2]; byte chunkY = buffer[4]; byte relativeY = buffer[5]; byte relativeX = buffer[6]; byte color = buffer[7]; PixelChangedEventArgs args = new PixelChangedEventArgs { Chunk = (chunkX, chunkY), Pixel = (relativeX, relativeY), Color = (PixelColor)color, DateTime = DateTime.Now }; OnPixelChanged?.Invoke(this, args); } }