コード例 #1
0
        /// <summary>
        /// Sends a request to join a lobby
        /// </summary>
        public void JoinLobby(int lobbyId, JoinLobbyCallback callback, ErrorCallback errorCallback)
        {
            if (!Client.IsConnected)
            {
                errorCallback.Invoke("Not connected");
                return;
            }

            // Send the message
            Client.SendMessage((ushort)OpCodes.JoinLobby, lobbyId, (status, response) =>
            {
                if (status != ResponseStatus.Success)
                {
                    errorCallback.Invoke(response.AsString("Unknown Error"));
                    return;
                }

                var data = response.Deserialize <LobbyDataPacket>();

                var joinedLobby = new JoinedLobby(this, data, Client);

                LastJoinedLobby = joinedLobby;

                callback.Invoke(joinedLobby);

                LobbyJoined?.Invoke(joinedLobby);
            });
        }
コード例 #2
0
        /// <summary>
        /// Sends a request to join a lobby
        /// </summary>
        public void JoinLobby(int lobbyId, JoinLobbyCallback callback, IClientSocket connection)
        {
            // Send the message
            connection.SendMessage((short)MstMessageCodes.JoinLobby, lobbyId, (status, response) =>
            {
                if (status != ResponseStatus.Success)
                {
                    callback.Invoke(null, response.AsString("Unknown Error"));
                    return;
                }

                var data = response.Deserialize(new LobbyDataPacket());

                var key = $"{data.LobbyId}:{connection.Peer.Id}";

                if (joinedLobbies.ContainsKey(key))
                {
                    // If there's already a lobby
                    callback.Invoke(joinedLobbies[key], null);
                    return;
                }

                var joinedLobby = new JoinedLobby(data, connection);

                LastJoinedLobby = joinedLobby;

                // Save the lobby
                joinedLobbies[key] = joinedLobby;

                callback.Invoke(joinedLobby, null);

                OnLobbyJoinedEvent?.Invoke(joinedLobby);
            });
        }
コード例 #3
0
 /// <summary>
 /// Sends a request to create a lobby and joins it
 /// </summary>
 public void CreateAndJoin(string lobbytypeid, Dictionary <string, string> properties,
                           JoinLobbyCallback callback, ErrorCallback errorCallback)
 {
     CreateLobby(lobbytypeid, properties, id =>
     {
         JoinLobby(id, callback.Invoke, error =>
         {
             errorCallback.Invoke("Failed to join the lobby: " + error);
         });
     }, error => errorCallback.Invoke("Failed to create lobby: " + error));
 }
コード例 #4
0
        /// <summary>
        ///     Sends a request to create a lobby and joins it
        /// </summary>
        public void CreateAndJoin(string factory, Dictionary <string, string> properties,
                                  JoinLobbyCallback callback, IClientSocket connection)
        {
            CreateLobby(factory, properties, (id, error) => {
                if (!id.HasValue)
                {
                    callback.Invoke(null, "Failed to create lobby: " + error);
                    return;
                }

                JoinLobby(id.Value, (lobby, joinError) => {
                    if (lobby == null)
                    {
                        callback.Invoke(null, "Failed to join the lobby: " + joinError);
                        return;
                    }

                    callback.Invoke(lobby, null);
                });
            });
        }
コード例 #5
0
        /// <summary>
        /// Sends a request to join a lobby
        /// </summary>
        public void JoinLobby(int lobbyId, JoinLobbyCallback callback)
        {
            if (!Connection.IsConnected)
            {
                callback.Invoke(null, "Not connected");
                return;
            }

            // Send the message
            Connection.SendMessage((short)OpCodes.JoinLobby, lobbyId, (status, response) =>
            {
                if (status != ResponseStatus.Success)
                {
                    callback.Invoke(null, response.AsString("Unknown Error"));
                    return;
                }

                var data = response.Deserialize(new LobbyDataPacket());

                var key = data.LobbyId + ":" + Connection.PeerId;

                if (_joinedLobbies.ContainsKey(key))
                {
                    // If there's already a lobby
                    callback.Invoke(_joinedLobbies[key], null);
                    return;
                }

                var joinedLobby = new JoinedLobby(this, data, Connection);

                LastJoinedLobby = joinedLobby;

                // Save the lobby
                _joinedLobbies[key] = joinedLobby;

                callback.Invoke(joinedLobby, null);

                LobbyJoined?.Invoke(joinedLobby);
            });
        }
コード例 #6
0
        /// <summary>
        /// Sends a request to create a lobby and joins it
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="properties"></param>
        /// <param name="callback"></param>
        public void CreateAndJoin(string factory, MstProperties options, JoinLobbyCallback callback)
        {
            CreateLobby(factory, options, (id, error) =>
            {
                if (!id.HasValue)
                {
                    callback.Invoke(null, "Failed to create lobby: " + error);
                    return;
                }

                JoinLobby(id.Value, (lobby, joinError) =>
                {
                    if (lobby == null)
                    {
                        callback.Invoke(null, "Failed to join the lobby: " + joinError);
                        return;
                    }

                    callback.Invoke(lobby, null);
                });
            });
        }
コード例 #7
0
 /// <summary>
 /// Sends a request to join a lobby
 /// </summary>
 /// <param name="lobbyId"></param>
 /// <param name="callback"></param>
 public void JoinLobby(int lobbyId, JoinLobbyCallback callback)
 {
     JoinLobby(lobbyId, callback, Connection);
 }
コード例 #8
0
 /// <summary>
 /// Sends a request to create a lobby and joins it
 /// </summary>
 /// <param name="factory"></param>
 /// <param name="properties"></param>
 /// <param name="callback"></param>
 public void CreateAndJoin(string factory, Dictionary <string, string> properties,
                           JoinLobbyCallback callback)
 {
     CreateAndJoin(factory, properties, callback, Connection);
 }