Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
     }
 }