// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using System.Collections.Generic; using System.Linq; using osu.Framework.Extensions; using osu.Framework.IO.Stores; using osu.Game.Database; using osu.Game.Extensions; namespace osu.Game.Skinning { public class LegacySkinResourceStore : ResourceStore where T : INamedFileInfo { private readonly IHasFiles source; public LegacySkinResourceStore(IHasFiles source, IResourceStore underlyingStore) : base(underlyingStore) { this.source = source; } protected override IEnumerable GetFilenames(string name) { if (source.Files == null) yield break; foreach (string filename in base.GetFilenames(name)) { string path = getPathForFile(filename.ToStandardisedPath()); if (path != null) yield return path; } } private string getPathForFile(string filename) => source.Files.Find(f => string.Equals(f.Filename, filename, StringComparison.OrdinalIgnoreCase))?.FileInfo.GetStoragePath(); public override IEnumerable GetAvailableResources() => source.Files.Select(f => f.Filename); } }