// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System.IO; using System.Linq; using osu.Game.Beatmaps.IO; namespace osu.Desktop.Beatmaps.IO { /// /// Reads an extracted legacy beatmap from disk. /// public class LegacyFilesystemReader : ArchiveReader { public static void Register() => AddReader((storage, path) => Directory.Exists(path)); private readonly string basePath; public LegacyFilesystemReader(string path) { basePath = path; BeatmapFilenames = Directory.GetFiles(basePath, @"*.osu").Select(Path.GetFileName).ToArray(); if (BeatmapFilenames.Length == 0) throw new FileNotFoundException(@"This directory contains no beatmaps"); StoryboardFilename = Directory.GetFiles(basePath, @"*.osb").Select(Path.GetFileName).FirstOrDefault(); } public override Stream GetStream(string name) { return File.OpenRead(Path.Combine(basePath, name)); } public override void Dispose() { // no-op } public override Stream GetUnderlyingStream() => null; } }