public void CreateAndJoinRoom(string roomName, string roomDesc, string code, bool isNSFW, bool isPublic)
 {
     ActiveRoom = new NetworkRoom(roomName, roomDesc, Guid.NewGuid().ToString(), code, PlayerData.Location, isPublic, isNSFW);
     ActiveRoom.Players.Add(PlayerData.GUID, PlayerData);
     PlayerData.RoomID = ActiveRoom.GUID;
     socket.Emit("create_room", ActiveRoom.JSONString);
     Debug.LogInfo($"Socket.IO Emit: 'create_room', sent data:\n{ActiveRoom.JSONString}\n", "NETWORK");
     SceneManager.Instance.LoadScene($"{PlayerData.Location}-Bar");
     SoundManager.Instance.PlaySound("bar_ambiance");
 }
        private void SetupSocket_Rooms()
        {
            socket.On("request_rooms_success", data => {
                Debug.LogInfo($"Socket.IO: 'request_rooms_success', received data:\n{data?.ToString()}\n", "NETWORK");
                Rooms       = new List <NetworkRoom>();
                var objData = (JObject)data;
                foreach (var prop in objData.Properties())
                {
                    var roomData = (JObject)objData[prop.Name];
                    var room     = new NetworkRoom(roomData.Value <string>("name"), roomData.Value <string>("desc"), roomData.Value <string>("guid"), roomData.Value <string>("code"), roomData.Value <string>("type"), roomData.Value <bool>("pub"), roomData.Value <bool>("nsfw"));
                    Rooms.Add(room);
                }

                RoomsReady = true;
            });
            socket.On("create_room_success", data => { Debug.LogInfo($"Socket.IO: 'create_room_success', received data:\n{data?.ToString()}\n", "NETWORK"); });
            socket.On("join_room_failed", data => {
                Debug.LogInfo($"Socket.IO: 'join_room_failed', received data:\n{data?.ToString()}\n", "NETWORK");
                Debug.LogWarning("Socket.IO response not implemented for 'join_room_failed'");
            });
            socket.On("join_room_success", data => {
                Debug.LogInfo($"Socket.IO: 'join_room_success', received data:\n{data?.ToString()}\n", "NETWORK");
                var roomData      = (JObject)data;
                ActiveRoom        = new NetworkRoom(roomData.Value <string>("name"), roomData.Value <string>("desc"), roomData.Value <string>("guid"), roomData.Value <string>("code"), roomData.Value <string>("type"), roomData.Value <bool>("pub"), roomData.Value <bool>("nsfw"));
                PlayerData.RoomID = ActiveRoom.GUID;
                ActiveRoom.Players.Add(PlayerData.GUID, PlayerData);
                joinRoomSuccess = true;
                socket.Emit("request_players", ActiveRoom.GUID);
                Debug.LogInfo($"Socket.IO Emit: 'request_players', sent data:\n{ActiveRoom.GUID}\n", "NETWORK");
            });
            socket.On("request_players_success", data => {
                Debug.LogInfo($"Socket.IO: 'request_players_success', received data:\n{data?.ToString()}\n", "NETWORK");
                var playerData = (JObject)data;
                foreach (var playerId in playerData.Properties())
                {
                    var networkPlayerData = new NetworkPlayer(playerData[playerId.Name].Value <string>("username"), playerData[playerId.Name].Value <string>("guid"), playerData[playerId.Name].Value <string>("room"), playerData[playerId.Name].Value <string>("location"), playerData[playerId.Name].Value <int>("avatar"), playerData[playerId.Name].Value <bool>("consent"));
                    ActiveRoom.Players.Add(playerId.Name, networkPlayerData);
                }
            });
            socket.On("client_joined", data => {
                Debug.LogInfo($"Socket.IO: 'client_joined', received data:\n{data?.ToString()}\n", "NETWORK");
                if (PlayerData.RoomID == "none")
                {
                    return;
                }
                var playerData = (JObject)data;
                newestMessage  = new ChatMessage("SERVER", "00000000-0000-0000-0000-000000000000", $"`{playerData.Value<string>("username")}` joined the room!");
                ActiveRoom.Players.Add(playerData.Value <string>("guid"), new NetworkPlayer()
                {
                    AvatarIndex = playerData.Value <int>("avatar"), Username = playerData.Value <string>("username"), GUID = playerData.Value <string>("guid")
                });
                SoundManager.Instance.PlaySound("client_joined");
                gotNewMessage = true;
            });

            socket.On("new_message", data => {
                Debug.LogInfo($"Socket.IO: 'new_message', received data:\n{data?.ToString()}\n", "NETWORK");
                newestMessage = ChatMessage.FromJSON(JObject.Parse(((JObject)data).Value <string>("message")));
                gotNewMessage = true;
            });

            socket.On("client_disconnected", data => {
                Debug.LogInfo($"Socket.IO: 'client_disconnected', received data:\n{data?.ToString()}\n", "NETWORK");
                if (PlayerData.RoomID == "none")
                {
                    return;
                }
                var playerData = (JObject)data;
                newestMessage  = new ChatMessage("SERVER", "00000000-0000-0000-0000-000000000000", $"`{playerData.Value<string>("username")}` left the room!");
                ActiveRoom.Players.Remove(playerData.Value <string>("guid"));
                SoundManager.Instance.PlaySound("client_left", true);
                gotNewMessage = true;
            });
        }