private void OnReceiveSessionJoinRequest(SharedSessionJoinRequest request, NebulaUser user) { SharedSessionRoom room = GetRoom(request.Session.Id); SharedSessionJoinResponse response = new SharedSessionJoinResponse(); if (room == null) { response.ResponseCode = 10; } else { if (room.IsUserPresent(user)) { response.ResponseCode = 11; } else if (room.PasswordProtected && !room.VerifyPassword(request.Password)) { response.ResponseCode = 12; } else if (room.IsFull()) { response.ResponseCode = 13; } else { room.AddUser(user); response.ResponseCode = 0; response.Session = room.AsSessionInfo(); response.Users = room.AsUsersArray(); } } Server.SendPacket(response, user.Peer); }
public bool CreateRoom(SharedSessionRoom room) { if (Rooms.ContainsKey(room.Id)) { return(false); } Rooms.Add(room.Id, room); WriteLine($"User '{room.Owner.Username}' created shared session '{room.Id}'", ConsoleColor.DarkCyan); return(true); }
private void OnReceiveRoomCreationRequest(SharedSessionCreationRequest request, NebulaUser user) { if (!ValidateString(request.Name, 3, 60) || request.Size <= 1) { return; } SharedSessionRoom room = new SharedSessionRoom(user, request.Name, request.Password, "", request.Size); CreateRoom(room); }
public void RemoveRoom(SharedSessionRoom room, string reason = "") { if (!Rooms.ContainsKey(room.Id)) { return; } Rooms.Remove(room.Id); if (!string.IsNullOrWhiteSpace(reason)) { WriteLine($"Removed shared session '{room.Id}'. Reason: {reason}", ConsoleColor.DarkCyan); } }