コード例 #1
0
        LobbyInfo CreateLobbyInfo(CSteamID id)
        {
            var info = new LobbyInfo(this);

            info.Id = id.m_SteamID;
            UpdateLobbyInfo(info);
            return(info);
        }
コード例 #2
0
        void UpdateLobbyInfo(LobbyInfo info)
        {
            var lobbyId = new CSteamID(info.Id);

            info.Name           = SteamMatchmaking.GetLobbyData(lobbyId, kNameKey);
            info.OnwerName      = SteamMatchmaking.GetLobbyData(lobbyId, kOwnerName);
            info.CurrentPlayers = SteamMatchmaking.GetNumLobbyMembers(lobbyId);
            info.MaxPlayers     = SteamMatchmaking.GetLobbyMemberLimit(lobbyId);
        }
コード例 #3
0
        public async Task JoinLobby(LobbyInfo lobby)
        {
            if (!SteamManager.Initialized)
            {
                throw new InvalidOperationException("Cannot join Steam lobby if SteamManager is not initalized.");
            }
            var lobbyEnter = await SteamMatchmaking.JoinLobby(new CSteamID(lobby.Id)).ToTask <LobbyEnter_t>();

            var response = (EChatRoomEnterResponse)lobbyEnter.m_EChatRoomEnterResponse;

            if (response != EChatRoomEnterResponse.k_EChatRoomEnterResponseSuccess)
            {
                throw new Exception($"Failed to join lobby: {response}");
            }
        }
コード例 #4
0
        public async Task JoinLobby(LobbyInfo lobby)
        {
            if (lobby == null)
            {
                return;
            }
            var manager = NetworkManager.Instance;
            var client  = manager.StartClient(new NetworkClientConfig(), manager.Matchmaker.NetworkInterfaceType);

            try {
                SetActive(ConnectingScreen);
                await client.Connect(new NetworkConnectionConfig {
                    LobbyInfo = lobby
                });

                SetActive(SuccessScreen);
            } catch (NetworkingException exception)  {
                SetActive(ErrorScreen);
                ErrorText.text = exception.Message;
            }
        }