From f03abb3145b53b8e0dd21c4d80fbd063a6a59b28 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 20 Mar 2018 16:28:39 +0900 Subject: [PATCH] Add GetTexture method to ISkinSource Used to shortcut lookup checks without potentially expensive drawable creation overhead. --- osu.Game/Skinning/DefaultSkin.cs | 3 +++ osu.Game/Skinning/ISkinSource.cs | 3 +++ osu.Game/Skinning/LegacySkin.cs | 4 +++- osu.Game/Skinning/LocalSkinOverrideContainer.cs | 3 +++ osu.Game/Skinning/Skin.cs | 3 +++ osu.Game/Skinning/SkinManager.cs | 3 +++ 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/osu.Game/Skinning/DefaultSkin.cs b/osu.Game/Skinning/DefaultSkin.cs index aa891646c8..7422ae2e47 100644 --- a/osu.Game/Skinning/DefaultSkin.cs +++ b/osu.Game/Skinning/DefaultSkin.cs @@ -3,6 +3,7 @@ using osu.Framework.Audio.Sample; using osu.Framework.Graphics; +using osu.Framework.Graphics.Textures; using OpenTK.Graphics; namespace osu.Game.Skinning @@ -26,6 +27,8 @@ namespace osu.Game.Skinning public override Drawable GetDrawableComponent(string componentName) => null; + public override Texture GetTexture(string componentName) => null; + public override SampleChannel GetSample(string sampleName) => null; } } diff --git a/osu.Game/Skinning/ISkinSource.cs b/osu.Game/Skinning/ISkinSource.cs index ffa520ae6a..924fdbd8c1 100644 --- a/osu.Game/Skinning/ISkinSource.cs +++ b/osu.Game/Skinning/ISkinSource.cs @@ -4,6 +4,7 @@ using System; using osu.Framework.Audio.Sample; using osu.Framework.Graphics; +using osu.Framework.Graphics.Textures; using osu.Game.Rulesets.Objects.Types; using OpenTK.Graphics; @@ -18,6 +19,8 @@ namespace osu.Game.Skinning Drawable GetDrawableComponent(string componentName); + Texture GetTexture(string componentName); + SampleChannel GetSample(string sampleName); Color4? GetComboColour(IHasComboIndex comboObject); diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index cfee2cfab2..c543537f32 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -57,12 +57,14 @@ namespace osu.Game.Skinning break; } - var texture = Textures.Get(componentName); + var texture = GetTexture(componentName); if (texture == null) return null; return new Sprite { Texture = texture }; } + public override Texture GetTexture(string componentName) => Textures.Get(componentName); + public override SampleChannel GetSample(string sampleName) => Samples.Get(sampleName); protected class LegacySkinResourceStore : IResourceStore diff --git a/osu.Game/Skinning/LocalSkinOverrideContainer.cs b/osu.Game/Skinning/LocalSkinOverrideContainer.cs index 66080bac17..a0cc11a324 100644 --- a/osu.Game/Skinning/LocalSkinOverrideContainer.cs +++ b/osu.Game/Skinning/LocalSkinOverrideContainer.cs @@ -6,6 +6,7 @@ using osu.Framework.Allocation; using osu.Framework.Audio.Sample; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Textures; using osu.Game.Rulesets.Objects.Types; using OpenTK.Graphics; @@ -17,6 +18,8 @@ namespace osu.Game.Skinning public Drawable GetDrawableComponent(string componentName) => source.GetDrawableComponent(componentName) ?? fallbackSource?.GetDrawableComponent(componentName); + public Texture GetTexture(string componentName) => source.GetTexture(componentName) ?? fallbackSource.GetTexture(componentName); + public SampleChannel GetSample(string sampleName) => source.GetSample(sampleName) ?? fallbackSource?.GetSample(sampleName); public Color4? GetComboColour(IHasComboIndex comboObject) => source.GetComboColour(comboObject) ?? fallbackSource?.GetComboColour(comboObject); diff --git a/osu.Game/Skinning/Skin.cs b/osu.Game/Skinning/Skin.cs index 8f8fe94337..5d2c640244 100644 --- a/osu.Game/Skinning/Skin.cs +++ b/osu.Game/Skinning/Skin.cs @@ -4,6 +4,7 @@ using System; using osu.Framework.Audio.Sample; using osu.Framework.Graphics; +using osu.Framework.Graphics.Textures; using osu.Game.Rulesets.Objects.Types; using OpenTK.Graphics; @@ -21,6 +22,8 @@ namespace osu.Game.Skinning public abstract SampleChannel GetSample(string sampleName); + public abstract Texture GetTexture(string componentName); + public virtual Color4? GetComboColour(IHasComboIndex comboObject) => Configuration.ComboColours.Count == 0 ? (Color4?)null : Configuration.ComboColours[comboObject.ComboIndex % Configuration.ComboColours.Count]; diff --git a/osu.Game/Skinning/SkinManager.cs b/osu.Game/Skinning/SkinManager.cs index e4149404cd..9ae6eef49f 100644 --- a/osu.Game/Skinning/SkinManager.cs +++ b/osu.Game/Skinning/SkinManager.cs @@ -10,6 +10,7 @@ using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Configuration; using osu.Framework.Graphics; +using osu.Framework.Graphics.Textures; using osu.Framework.Platform; using osu.Game.Database; using osu.Game.IO.Archives; @@ -119,6 +120,8 @@ namespace osu.Game.Skinning public Drawable GetDrawableComponent(string componentName) => CurrentSkin.Value.GetDrawableComponent(componentName); + public Texture GetTexture(string componentName)=> CurrentSkin.Value.GetTexture(componentName); + public SampleChannel GetSample(string sampleName) => CurrentSkin.Value.GetSample(sampleName); public Color4? GetComboColour(IHasComboIndex comboObject) => CurrentSkin.Value.GetComboColour(comboObject);