// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; using osu.Framework.Audio.Sample; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Textures; using osu.Game.Audio; using osu.Game.Skinning; namespace osu.Game.Rulesets.Taiko.Skinning { public class TaikoLegacySkinTransformer : ISkin { private readonly ISkinSource source; public TaikoLegacySkinTransformer(ISkinSource source) { this.source = source; } public Drawable GetDrawableComponent(ISkinComponent component) => source.GetDrawableComponent(component); public Texture GetTexture(string componentName) => source.GetTexture(componentName); public SampleChannel GetSample(ISampleInfo sampleInfo) => source.GetSample(new LegacyTaikoSampleInfo(sampleInfo)); public IBindable GetConfig(TLookup lookup) => source.GetConfig(lookup); private class LegacyTaikoSampleInfo : ISampleInfo { private readonly ISampleInfo source; public LegacyTaikoSampleInfo(ISampleInfo source) { this.source = source; } public IEnumerable LookupNames { get { foreach (var name in source.LookupNames) yield return $"taiko-{name}"; foreach (var name in source.LookupNames) yield return name; } } public int Volume => source.Volume; } } }