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