/// <summary>
        /// </summary>
        public EditorScreen(Qua map)
        {
            if (OnlineManager.IsSpectatingSomeone)
            {
                OnlineManager.Client?.StopSpectating();
            }

            OriginalMap = map;
            WorkingMap  = ObjectHelper.DeepClone(OriginalMap);
            FixInvalidHitObjectLayers();

            MapManager.Selected.Value.Qua = WorkingMap;

            // Discord Rich Presence
            DiscordHelper.Presence.Details        = WorkingMap.ToString();
            DiscordHelper.Presence.State          = "Editing";
            DiscordHelper.Presence.StartTimestamp = (long)(TimeHelper.GetUnixTimestampMilliseconds() / 1000);
            DiscordHelper.Presence.EndTimestamp   = 0;
            DiscordRpc.UpdatePresence(ref DiscordHelper.Presence);

            ActiveLayerInterface = new Bindable <EditorLayerInterface>(EditorLayerInterface.Composition)
            {
                Value = EditorLayerInterface.Composition
            };

            ModManager.RemoveSpeedMods();

            if (!LoadAudioTrack())
            {
                return;
            }

            CustomAudioSampleCache.LoadSamples(MapManager.Selected.Value, MapManager.Selected.Value.Md5Checksum);

            SetHitSoundObjectIndex();

            GameBase.Game.IsMouseVisible = true;
            GameBase.Game.GlobalUserInterface.Cursor.Visible = false;

            GameBase.Game.Window.FileDropped += OnFileDropped;

            if (MapManager.Selected.Value.Game == MapGame.Quaver)
            {
                BeginWatchingFiles();
            }

            Metronome = new Metronome(WorkingMap);
            View      = new EditorScreenView(this);
            CreateRuleset();

            AppDomain.CurrentDomain.UnhandledException += OnCrash;

            if (File.Exists($"{ConfigManager.SongDirectory}/{MapManager.Selected.Value.Directory}/{MapManager.Selected.Value.Path}.autosave"))
            {
                DialogManager.Show(new EditorAutosaveDetectionDialog());
            }
        }
 /// <inheritdoc />
 /// <summary>
 /// </summary>
 /// <returns></returns>
 public override UserClientStatus GetClientStatus() => new UserClientStatus(ClientStatus.Editing, -1, "", (byte)GameMode.Keys4, WorkingMap.ToString(), 0);