/// <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); }); }
/// <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); }); }
/// <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)); }
/// <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); }); }); }
/// <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); }); }
/// <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); }); }); }
/// <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); }
/// <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); }