瀏覽代碼

Merge pull request #130 from Wolfb34/master

Add support for deleting from WIP and extra folders
Halsafar 4 年之前
父節點
當前提交
4f32e9c79d
共有 1 個文件被更改,包括 29 次插入3 次删除
  1. 29 3
      SongBrowserPlugin/UI/Browser/SongBrowserUI.cs

+ 29 - 3
SongBrowserPlugin/UI/Browser/SongBrowserUI.cs

@@ -937,17 +937,43 @@ namespace SongBrowser.UI
                         try
                         {
                             List<IPreviewBeatmapLevel> levels = _beatUi.GetCurrentLevelCollectionLevels().ToList();
-                            int selectedIndex = levels.FindIndex(x => x.levelID == _beatUi.StandardLevelDetailView.selectedDifficultyBeatmap.level.levelID);
+                            String collection = _beatUi.GetCurrentSelectedAnnotatedBeatmapLevelCollection().collectionName;
+                            String selectedLevelID = _beatUi.StandardLevelDetailView.selectedDifficultyBeatmap.level.levelID;
+                            int selectedIndex = levels.FindIndex(x => x.levelID == selectedLevelID);
 
                             if (selectedIndex > -1)
                             {
-                                var song = SongCore.Loader.CustomLevels.First(x => x.Value.levelID == _beatUi.LevelDetailViewController.selectedDifficultyBeatmap.level.levelID).Value;
+                                CustomPreviewBeatmapLevel song;
+
+                                switch (collection)
+                                {
+                                    case "Custom Levels":
+                                        song = SongCore.Loader.CustomLevels.First(x => x.Value.levelID == selectedLevelID).Value;
+                                        break;
+                                    case "WIP Levels":
+                                        song = SongCore.Loader.CustomWIPLevels.First(x => x.Value.levelID == selectedLevelID).Value;
+                                        break;
+                                    case "Cached WIP Levels":
+                                        throw new Exception("Cannot delete cached levels.");
+                                    default:
+                                        var names = SongCore.Loader.SeperateSongFolders.Select(x => x.SongFolderEntry.Name);
+                                        var separateFolders = SongCore.Loader.SeperateSongFolders;
+
+                                        if (names.Contains(collection))
+                                        {
+                                            int folder_index = separateFolders.FindIndex(x => x.SongFolderEntry.Name.Equals(collection));
+                                            song = separateFolders[folder_index].Levels.First(x => x.Value.levelID == selectedLevelID).Value;
+                                        }
+                                        else
+                                            throw new Exception("Could not find level path. Is the selected collection a playlist?");
+                                        break;
+                                }
 
                                 Logger.Info($"Deleting song: {song.customLevelPath}");
 
                                 SongCore.Loader.Instance.DeleteSong(song.customLevelPath);
 
-                                int removedLevels = levels.RemoveAll(x => x.levelID == _beatUi.StandardLevelDetailView.selectedDifficultyBeatmap.level.levelID);
+                                int removedLevels = levels.RemoveAll(x => x.levelID == selectedLevelID);
                                 Logger.Info($"Removed [{removedLevels}] level(s) from song list!");
 
                                 this.UpdateLevelDataModel();