Пример #1
0
 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;
         }
     }
 }
Пример #2
0
        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;
                }
            }
        }