Exemplo n.º 1
0
        public void OnPeerConnected(NetPeer peer)
        {
            IConnection conn = new MpNetConnection(peer);

            conn.username = Multiplayer.username;
            conn.State    = ConnectionStateEnum.ClientJoining;

            Multiplayer.session.client = conn;
            Multiplayer.session.ReapplyPrefs();

            MpLog.Log("Net client connected");
        }
        public void OnPeerConnected(NetPeer peer)
        {
            IConnection conn = new MpNetConnection(peer);

            conn.State = ConnectionStateEnum.ServerJoining;
            peer.Tag   = conn;

            var player = server.OnConnected(conn);

            if (arbiter)
            {
                player.type = PlayerType.Arbiter;
            }
        }
Exemplo n.º 3
0
        private string NetInfoText()
        {
            if (Multiplayer.session == null)
            {
                return("");
            }

            var text = new StringBuilder();

            var netClient = Multiplayer.session.netClient;

            if (netClient != null)
            {
                LogNetData("Client", netClient.Statistics);
            }
            if (Multiplayer.LocalServer != null)
            {
                if (Multiplayer.LocalServer.lanManager != null)
                {
                    LogNetData("Lan Server", Multiplayer.LocalServer.lanManager.Statistics);
                }
                if (Multiplayer.LocalServer.netManager != null)
                {
                    LogNetData("Net Server", Multiplayer.LocalServer.netManager.Statistics);
                }
                foreach (ServerPlayer item in Enumerable.ToList(Multiplayer.LocalServer.players))
                {
                    MpNetConnection mpNetConnection = item.conn as MpNetConnection;
                    if (mpNetConnection != null)
                    {
                        LogNetData("Net Peer " + item.Username, mpNetConnection.peer.Statistics);
                    }
                }
            }

            foreach (var remote in Multiplayer.session.knownUsers)
            {
                text.AppendLine(SteamFriends.GetFriendPersonaName(remote));
                text.AppendLine(remote.ToString());

                if (SteamNetworking.GetP2PSessionState(remote, out P2PSessionState_t state))
                {
                    text.AppendLine($"Active: {state.m_bConnectionActive}");
                    text.AppendLine($"Connecting: {state.m_bConnecting}");
                    text.AppendLine($"Error: {state.m_eP2PSessionError}");
                    text.AppendLine($"Using relay: {state.m_bUsingRelay}");
                    text.AppendLine($"Bytes to send: {state.m_nBytesQueuedForSend}");
                    text.AppendLine($"Packets to send: {state.m_nPacketsQueuedForSend}");
                    text.AppendLine($"Remote IP: {state.m_nRemoteIP}");
                    text.AppendLine($"Remote port: {state.m_nRemotePort}");
                }
                else
                {
                    text.AppendLine("No connection");
                }

                text.AppendLine();
            }

            return(text.ToString());

            void LogNetData(string name, NetStatistics stats)
            {
                text.AppendLine(name);
                text.AppendLine($"Bytes received: {stats.BytesReceived}");
                text.AppendLine($"Bytes sent: {stats.BytesSent}");
                text.AppendLine($"Packets received: {stats.PacketsReceived}");
                text.AppendLine($"Packets sent: {stats.PacketsSent}");
                text.AppendLine($"Packet loss: {stats.PacketLoss}");
                text.AppendLine($"Sequenced packet loss: {stats.SequencedPacketLoss}");
                text.AppendLine($"Packet loss percent: {stats.PacketLossPercent}");
                text.AppendLine();
            }
        }