public SongInfo GetRandom() { List <IBeatmapSet> beatmapSetList = BeatmapDb.BeatmapSets.Values.ToList(); List <IBeatmap> beatmapList; if (CollectionMode) { beatmapList = PlayCollection; } else { IBeatmapSet mapSet = beatmapSetList[(int)(new Random().NextDouble() * (beatmapSetList.Count - 1))]; beatmapList = mapSet.Beatmaps.Values.ToList(); } IBeatmap map = beatmapList[(int)(new Random().NextDouble() * (beatmapList.Count - 1))]; DirectoryInfo beatmapFolder = new DirectoryInfo(SongsFolder.FullName + Path.DirectorySeparatorChar + map.SongFolderName); Beatmap bm = new Beatmap(beatmapFolder.FullName + Path.DirectorySeparatorChar + map.OsuFileName); ContentEvent backgroundEvent = null; foreach (EventBase e in bm.Events) { if (e is ContentEvent contentEvent) { if (contentEvent.Type == ContentType.Image) { backgroundEvent = contentEvent; break; } } } return(new SongInfo { Title = bm.Title, TitleUnicode = bm.TitleUnicode, ArtistName = bm.Artist, ArtistNameUnicode = bm.ArtistUnicode, Song = beatmapFolder.FullName + Path.DirectorySeparatorChar + bm.AudioFilename, Background = backgroundEvent == null ? null : beatmapFolder.FullName + Path.DirectorySeparatorChar + backgroundEvent.Filename }); }
public BeatmapSetFile(IBeatmapSet set, Stream stream) { BeatmapSet = set; Stream = stream; }