/// <summary> /// Connects to server /// </summary> private void ConnectServer() { if (m_serverConnection != null) { if (m_serverConnection.Status == NetConnectionStatus.Connected || m_serverConnection.Status == NetConnectionStatus.InitiatedConnect || m_serverConnection.Status == NetConnectionStatus.RespondedConnect) { return; // Connection OK } // When disconnecting, wait m_serverConnection.WaitForStatusCleared(NetConnectionStatus.Disconnecting); } Debug.Assert(m_peer.Status == NetPeerStatus.Running, "Invalid networking state"); var host = MyMwcFinalBuildConstants.MULTIPLAYER_HOST_ADDRESS ?? MyMwcFinalBuildConstants.MASTER_SERVER_ADDRESS; if (MySteam.IsActive) { var loginMsg = new MyEventLoginSteam(); loginMsg.AppVersion = MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION; loginMsg.DisplayName = MySteam.UserName; loginMsg.SteamTicket = MySteam.SessionTicket; loginMsg.SteamUserId = MySteam.UserId; loginMsg.InternalEndpoint = new IPEndPoint(m_localIp, ((IPEndPoint)m_peer.Socket.LocalEndPoint).Port); m_serverConnection = m_peer.Connect(host, MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER, ref loginMsg); } else { var loginMsg = new MyEventLogin(); loginMsg.AppVersion = MyMwcFinalBuildConstants.SERVER_PROTOCOL_VERSION; loginMsg.Username = MyClientServer.LoggedPlayer.UserName.ToString(); loginMsg.PasswordHash = MyClientServer.LoggedPlayer.PasswordHash.ToString(); loginMsg.InternalEndpoint = new IPEndPoint(m_localIp, ((IPEndPoint)m_peer.Socket.LocalEndPoint).Port); m_serverConnection = m_peer.Connect(host, MyMwcNetworkingConstants.NETWORKING_PORT_MASTER_SERVER, ref loginMsg); } }
public void OnIntroduce(IPEndPoint endpoint, string token) { Debug.Assert(m_playersToIntroduce != null); int userId; MyPlayerRemote player; if (int.TryParse(token, out userId) && m_playersToIntroduce.TryGetValue(userId, out player)) { if (player.Connection == null) { player.Connection = m_peer.Connect(endpoint); player.Connection.Tag = player; } } }