Beispiel #1
0
		public void ConnectToServer(string ip, ushort port, string user) {
			// Create a debug log file

			Type skaterSpawner = AccessTools.TypeByName("SkaterSpawner");

			if (skaterSpawner != null) {
				object spawnerInstance = Traverse.Create(skaterSpawner).Property("Instance").GetValue();
				if (spawnerInstance != null) {
					Traverse.Create(spawnerInstance).Method("RemoveModelCoroutine").GetValue();
				}
			}

			int i = 0;
			while (this.debugWriter == null) {
				string filename = "Multiplayer Debug Client" + (i == 0 ? "" : " " + i.ToString()) + ".txt";
				try {
					this.debugWriter = new StreamWriter(filename);
				} catch (Exception) {
					this.debugWriter = null;
					i++;
				}
			}
			this.debugWriter.AutoFlush = true;
			this.debugWriter.WriteLine("Attempting to connect to server ip {0} on port {1}", ip, port.ToString());

			MultiplayerUtils.serverMapDictionary.Clear();

			this.playerController = new MultiplayerLocalPlayerController(this.debugWriter);
			this.playerController.ConstructPlayer();
			this.playerController.username = user;

			// TODO: Add popup window with a download for vc_redistx64.exe
			
			Library.Initialize();

			client = new NetworkingSockets();

			IPAddress serverIP = null;
			if (!IPAddress.TryParse(ip, out serverIP)) {
				try {
					IPHostEntry hostInfo = Dns.GetHostEntry(ip);
					foreach (IPAddress address in hostInfo.AddressList) {
						if (address.MapToIPv4() != null) {
							serverIP = address.MapToIPv4();
						}
					}
				} catch (Exception) { }
			}

			serverPort = port;
			serverIPString = serverIP.ToString();

			Address remoteAddress = new Address();
			remoteAddress.SetAddress(serverIP.ToString(), port);

			connection = client.Connect(ref remoteAddress);

			status = StatusCallback;

#if !VALVESOCKETS_SPAN
			netMessages = new NetworkingMessage[maxMessages];
#endif

			networkMessageThread = new Thread(UpdateClient);
			networkMessageThread.IsBackground = true;
			networkMessageThread.Start();

			decompressionThread = new Thread(DecompressSoundAnimationQueue);
			decompressionThread.IsBackground = true;
			decompressionThread.Start();
		}
        public void ConnectToServer(string ip, ushort port, string user)
        {
            // Create a debug log file
            int i = 0;

            while (this.debugWriter == null)
            {
                string filename = "Multiplayer Debug Client" + (i == 0 ? "" : " " + i.ToString()) + ".txt";
                try {
                    this.debugWriter = new StreamWriter(filename);
                } catch (Exception) {
                    this.debugWriter = null;
                    i++;
                }
            }
            this.debugWriter.AutoFlush = true;
            this.debugWriter.WriteLine("Attempting to connect to server ip {0} on port {1}", ip, port.ToString());

            MultiplayerUtils.serverMapDictionary.Clear();

            this.playerController = new MultiplayerLocalPlayerController(this.debugWriter);
            this.playerController.ConstructPlayer();
            this.playerController.username = user;

            Library.Initialize();

            client = new NetworkingSockets();

            IPAddress serverIP = null;

            if (!IPAddress.TryParse(ip, out serverIP))
            {
                try {
                    IPHostEntry hostInfo = Dns.GetHostEntry(ip);
                    foreach (IPAddress address in hostInfo.AddressList)
                    {
                        if (address.MapToIPv4() != null)
                        {
                            serverIP = address.MapToIPv4();
                        }
                    }
                } catch (Exception) { }
            }


            Address remoteAddress = new Address();

            remoteAddress.SetAddress(serverIP.ToString(), port);

            connection = client.Connect(ref remoteAddress);

            status = StatusCallback;

#if !VALVESOCKETS_SPAN
            netMessages = new NetworkingMessage[maxMessages];
#endif

            networkMessageThread = new Thread(UpdateClient);
            networkMessageThread.IsBackground = true;
            networkMessageThread.Start();
        }