public static void HandlePlayerColor(ClientObject client, byte[] messageData) { using (MessageReader mr = new MessageReader(messageData)) { PlayerColorMessageType messageType = (PlayerColorMessageType)mr.Read <int>(); switch (messageType) { case PlayerColorMessageType.SET: { string playerName = mr.Read <string>(); if (playerName != client.playerName) { DarkLog.Debug(client.playerName + " tried to send a color update for " + playerName + ", kicking."); Messages.ConnectionEnd.SendConnectionEnd(client, "Kicked for sending a color update for another player"); return; } client.playerColor = mr.Read <float[]>(); //Relay the message ServerMessage newMessage = new ServerMessage(); newMessage.type = ServerMessageType.PLAYER_COLOR; newMessage.data = messageData; ClientHandler.SendToAll(client, newMessage, true); } break; } } }
public void HandlePlayerColorMessage(byte[] messageData) { using (MessageReader mr = new MessageReader(messageData)) { PlayerColorMessageType messageType = (PlayerColorMessageType)mr.Read <int>(); switch (messageType) { case PlayerColorMessageType.LIST: { int numOfEntries = mr.Read <int>(); lock (playerColorLock) { playerColors = new Dictionary <string, Color>(); for (int i = 0; i < numOfEntries; i++) { string playerName = mr.Read <string>(); Color playerColor = ConvertFloatArrayToColor(mr.Read <float[]>()); playerColors.Add(playerName, playerColor); playerStatusWindow.colorEventHandled = false; } } } break; case PlayerColorMessageType.SET: { lock (playerColorLock) { string playerName = mr.Read <string>(); Color playerColor = ConvertFloatArrayToColor(mr.Read <float[]>()); DarkLog.Debug("Color message, name: " + playerName + " , color: " + playerColor.ToString()); playerColors[playerName] = playerColor; UpdateAllVesselColors(); playerStatusWindow.colorEventHandled = false; } } break; default: break; } } }