Ejemplo n.º 1
0
 private void mConnection_OnReceiveMessage(NetMessage message)
 {
     EventLog.WriteLine("Traffic Manager received a message(" + message.MessageType.ToString() + "): " + message.EndPoint.Address.ToString() + " " + message.Text, LogCategory.Get("TrafficManager"), new object[0]);
     if (message.MessageType == NetMessageTypes.Nat)
     {
         Game.IncomingNatMessage("udp:/address=" + message.EndPoint.Address.ToString() + ";port=" + message.EndPoint.Port.ToString(), message.Buffer, message.Buffer.Length);
         EventLog.WriteLine("Registerd NAT traffic back to Quazal.", LogCategory.Get("TrafficManager"), new object[0]);
         if (message.Text.IndexOf("udp:/") < 0)
         {
             this.QueueMessage(this.MakeInfoMessage(message.EndPoint));
         }
     }
     else if (message.MessageType == NetMessageTypes.GPGText)
     {
         string[] strArray = message.Text.Split(" ".ToCharArray(), 2);
         if (strArray.Length == 2)
         {
             string str2 = strArray[0];
             string data = strArray[1];
             switch (str2)
             {
                 case "/PLAYERID":
                 {
                     PlayerInformation info = new PlayerInformation(data) {
                         EndPoint = message.EndPoint
                     };
                     if (info.PlayerName != User.Current.Name)
                     {
                         try
                         {
                             if (!this.mConnectAttempts.ContainsKey(info.PlayerName))
                             {
                                 this.mConnectAttempts.Add(info.PlayerName, 0);
                             }
                             int num = (int) this.mConnectAttempts[info.PlayerName];
                             num++;
                             if (num < ConfigSettings.GetInt("PlayerIDResponseAttempts", 30))
                             {
                                 this.CreateNewPlayer(message.EndPoint.Address.ToString(), message.EndPoint.Port);
                                 this.mConnectAttempts[info.PlayerName] = num;
                             }
                         }
                         catch (Exception exception)
                         {
                             ErrorLog.WriteLine(exception);
                         }
                     }
                     if ((!this.mPlayerInfo.ContainsKey(info.PlayerID) || (this.mPlayerInfo[info.PlayerID] == null)) && (this.OnNewPlayer != null))
                     {
                         this.OnNewPlayer(info);
                     }
                     this.mPlayerInfo[info.PlayerID] = info;
                     goto Label_02E2;
                 }
                 case "/ASKREPLY":
                 {
                     string[] strArray2 = data.Split(new char[] { ':' });
                     IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(strArray2[0]), Convert.ToInt32(strArray2[1]));
                     this.QueueMessage(this.MakeInfoMessage(endpoint));
                     this.QueueMessage(this.MakeInfoMessage(message.EndPoint));
                     goto Label_02E2;
                 }
             }
         }
     }
 Label_02E2:
     if (this.OnReceiveMessage != null)
     {
         this.OnReceiveMessage(message);
     }
 }
Ejemplo n.º 2
0
 private void mTrafficManager_OnNewPlayer(PlayerInformation info)
 {
     EventLog.WriteLine("Got a new player: " + info.EndPoint.Address.ToString() + " " + info.PlayerName, LogCategory.Get("SupComGameManager"), new object[0]);
     if (info.PlayerID != -1)
     {
         if (!this.mIsJoined)
         {
             this.mConnections[info.PlayerID] = info;
             this.EstablishConnections();
         }
         else if (this.mGameState == GPG.Multiplayer.Game.GameState.Lobby)
         {
             this.ConnectPeer(info.EndPoint.Address.ToString(), info.EndPoint.Port, info.PlayerName, info.PlayerID);
         }
         this.mConnections[info.PlayerID] = info;
     }
 }