public override void Close(string msg = null)
        {
            if (!isActive)
            {
                return;
            }

            SteamManager.LeaveLobby();

            isActive = false;

            IWriteMessage outMsg = new WriteOnlyMessage();

            outMsg.Write((byte)DeliveryMethod.Reliable);
            outMsg.Write((byte)PacketHeader.IsDisconnectMessage);
            outMsg.Write(msg ?? "Disconnected");

            SteamManager.Instance.Networking.SendP2PPacket(hostSteamId, outMsg.Buffer, outMsg.LengthBytes,
                                                           Facepunch.Steamworks.Networking.SendType.Reliable);

            Thread.Sleep(100);

            Steam.SteamManager.Instance.Networking.OnIncomingConnection = null;
            Steam.SteamManager.Instance.Networking.OnP2PData            = null;
            Steam.SteamManager.Instance.Networking.SetListenChannel(0, false);

            Steam.SteamManager.Instance.Networking.CloseSession(hostSteamId);

            steamAuthTicket?.Cancel(); steamAuthTicket = null;
            hostSteamId = 0;

            OnDisconnect?.Invoke();
        }
示例#2
0
 public void CancelAuthSessionTicket()
 {
     if (SteamTicket != null)
     {
         SteamTicket.Cancel();
         SteamTicket = null;
     }
 }
示例#3
0
        private void SetSessionAuthTicket(Auth.Ticket ticket)
        {
            if (m_AuthTicket != null)
            {
                throw new Exception("An auth ticket is already active");
            }

            m_AuthTicket = ticket;
        }
示例#4
0
 public static bool Init()
 {
     _client = new Client(_appId);
     if (_client == null)
     {
         return(false);
     }
     _ticket = _client.Auth.GetAuthSessionTicket();
     return(_ticket != null);
 }
示例#5
0
        public override void Dispose()
        {
            ServerPeer.EnetPeer.DisconnectNow(0);

#if STEAM_AUTH
            m_AuthTicket?.Cancel();
            m_AuthTicket = null;
#endif

            base.Dispose();
        }
示例#6
0
        public Auth.Ticket GetAuthSessionTicket()
        {
            if (Client.Instance == null)
            {
                Debug.LogError("Failed to get steam ticket. Steam client not initialized.");
                return(null);
            }

            SteamTicket = Client.Instance.Auth.GetAuthSessionTicket();
            return(SteamTicket);
        }
示例#7
0
        private void clRPC_HandShake()
        {
            Debug.Log("Getting steam auth ticket.");
            Auth.Ticket ticket  = Client.Auth.GetAuthSessionTicket();
            ulong       steamId = Client.SteamId;

            byte[] ticketData = ticket.Data;
            string username   = Me.Username;

            // 버전, 스팀티켓, 스팀id 전송
            _view.RPC(RPCOption.ToServer, "svRPC_HandShake", Config.Version, ticketData, steamId, username);
        }
示例#8
0
        public override void Close(string msg = null)
        {
            if (!isActive)
            {
                return;
            }

            isActive = false;

            netClient.Shutdown(msg ?? TextManager.Get("Disconnecting"));
            netClient = null;
            steamAuthTicket?.Cancel(); steamAuthTicket = null;
            OnDisconnect?.Invoke();
        }
示例#9
0
        public override void Start(object endPoint, int ownerKey)
        {
            if (isActive)
            {
                return;
            }

            this.ownerKey = ownerKey;

            netPeerConfiguration = new NetPeerConfiguration("barotrauma");

            netPeerConfiguration.DisableMessageType(NetIncomingMessageType.DebugMessage | NetIncomingMessageType.WarningMessage | NetIncomingMessageType.Receipt
                                                    | NetIncomingMessageType.ErrorMessage | NetIncomingMessageType.Error);

            netClient = new NetClient(netPeerConfiguration);

            if (SteamManager.IsInitialized)
            {
                steamAuthTicket = SteamManager.GetAuthSessionTicket();
                //TODO: wait for GetAuthSessionTicketResponse_t

                if (steamAuthTicket == null)
                {
                    throw new Exception("GetAuthSessionTicket returned null");
                }
            }

            incomingLidgrenMessages = new List <NetIncomingMessage>();

            initializationStep = ConnectionInitialization.SteamTicketAndVersion;

            if (!(endPoint is IPEndPoint ipEndPoint))
            {
                throw new InvalidCastException("endPoint is not IPEndPoint");
            }
            if (ServerConnection != null)
            {
                throw new InvalidOperationException("ServerConnection is not null");
            }

            netClient.Start();
            ServerConnection        = new LidgrenConnection("Server", netClient.Connect(ipEndPoint), 0);
            ServerConnection.Status = NetworkConnectionStatus.Connected;

            isActive = true;
        }
示例#10
0
 public static void Init()
 {
     try
     {
         _client = new Client(_appId);
         if (_client == null)
         {
             IsLoaded = false;
             return;
         }
         _ticket  = _client.Auth.GetAuthSessionTicket();
         IsLoaded = _ticket != null;
     }
     catch (Exception)
     {
         Debug.WriteLine("Failed to load Steam.");
     }
 }
示例#11
0
        public override void Start(object endPoint, int ownerKey)
        {
            steamAuthTicket = SteamManager.GetAuthSessionTicket();
            //TODO: wait for GetAuthSessionTicketResponse_t

            if (steamAuthTicket == null)
            {
                throw new Exception("GetAuthSessionTicket returned null");
            }

            if (!(endPoint is UInt64 steamIdEndpoint))
            {
                throw new InvalidCastException("endPoint is not UInt64");
            }

            hostSteamId = steamIdEndpoint;

            Steam.SteamManager.Instance.Networking.OnIncomingConnection = OnIncomingConnection;
            Steam.SteamManager.Instance.Networking.OnP2PData            = OnP2PData;
            Steam.SteamManager.Instance.Networking.SetListenChannel(0, true);

            ServerConnection = new SteamP2PConnection("Server", hostSteamId);

            incomingInitializationMessages = new List <IReadMessage>();
            incomingDataMessages           = new List <IReadMessage>();

            IWriteMessage outMsg = new WriteOnlyMessage();

            outMsg.Write((byte)DeliveryMethod.Reliable);
            outMsg.Write((byte)PacketHeader.IsConnectionInitializationStep);
            outMsg.Write((byte)ConnectionInitialization.ConnectionStarted);

            SteamManager.Instance.Networking.SendP2PPacket(hostSteamId, outMsg.Buffer, outMsg.LengthBytes,
                                                           Facepunch.Steamworks.Networking.SendType.Reliable);

            initializationStep = ConnectionInitialization.SteamTicketAndVersion;

            timeout        = NetworkConnection.TimeoutThreshold;
            heartbeatTimer = 1.0;

            isActive = true;
        }