internal static void CheckAndProcess(bool ForceRefresh, bool UserForced = false) { bool newFiles = ChangedFolders.Count > 0 || ChangedPackages.Count > 0; Logger.LogPrint($"ChangedFolders: {ChangedFolders.Count}\nChangedPackages: {ChangedPackages.Count}"); if (newFiles) { InvokeOnStatusUpdate(LocalisationManager.GetString(OsuString.BeatmapManager_LoadingNewFilesOnly)); ProcessBeatmaps(true); if (pulledOnlineStatsOnce) //save some bandwidth when adding a single new song if possible. { GetOnlineBeatmapInfo(NewFilesList); } } if ((!newFiles && ForceRefresh) || Beatmaps.Count == 0) { InvokeOnStatusUpdate(LocalisationManager.GetString(OsuString.BeatmapManager_ReloadingDatabase)); ProcessBeatmaps(false, !UserForced); } if (!pulledOnlineStatsOnce) { GetOnlineBeatmapInfo(); pulledOnlineStatsOnce = true; } ChangedFolders.Clear(); ChangedPackages.Clear(); NewFilesList.Clear(); }
private static void songWatcher_Changed(object sender, FileSystemEventArgs e) { string fullPath = Path.GetDirectoryName(e.FullPath); if (fullPath.Contains("_tmp")) { return; } if (e.FullPath.EndsWith(".osz") && fullPath == BeatmapManager.SongsDirectory && e.ChangeType == WatcherChangeTypes.Created) { if (!BeatmapImport.DoNewBeatmapCheck) { signalBeatmapCheck(); } return; } if (e.FullPath.EndsWith(".osz2") && !ChangedPackages.Contains(e.FullPath)) { if (!BeatmapImport.DoNewBeatmapCheck) { signalBeatmapCheck(); } ChangedPackages.Add(e.FullPath); } else if (!ChangedFolders.Contains(fullPath)) { signalBeatmapCheck(); ChangedFolders.Add(fullPath); } }