Esempio n. 1
0
        /// <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;
                }
            }
        }