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
            });
        }
Exemple #2
0
 public BeatmapSetFile(IBeatmapSet set, Stream stream)
 {
     BeatmapSet = set;
     Stream     = stream;
 }