From c4fe6a04c555574f7f844a37432aeabf32e6dd68 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 22 Mar 2018 17:32:05 +0900 Subject: [PATCH] Use string lookups for combo colours --- .../Objects/Drawables/DrawableHitObject.cs | 2 +- osu.Game/Skinning/ISkinSource.cs | 3 +-- .../Skinning/LocalSkinOverrideContainer.cs | 3 +-- osu.Game/Skinning/Skin.cs | 22 ++++++++++++++++--- osu.Game/Skinning/SkinManager.cs | 3 +-- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index 6aa7ddf787..b8852bb141 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -107,7 +107,7 @@ namespace osu.Game.Rulesets.Objects.Drawables base.SkinChanged(skin, allowFallback); if (HitObject is IHasComboInformation combo) - AccentColour = skin.GetComboColour(combo) ?? Color4.White; + AccentColour = skin.GetColour($"Play/Combo/{combo.ComboIndex}") ?? Color4.White; } protected override void LoadComplete() diff --git a/osu.Game/Skinning/ISkinSource.cs b/osu.Game/Skinning/ISkinSource.cs index 9911ee3a95..5292ff3cb5 100644 --- a/osu.Game/Skinning/ISkinSource.cs +++ b/osu.Game/Skinning/ISkinSource.cs @@ -5,7 +5,6 @@ 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; namespace osu.Game.Skinning @@ -23,6 +22,6 @@ namespace osu.Game.Skinning SampleChannel GetSample(string sampleName); - Color4? GetComboColour(IHasComboInformation comboObject); + Color4? GetColour(string colourName); } } diff --git a/osu.Game/Skinning/LocalSkinOverrideContainer.cs b/osu.Game/Skinning/LocalSkinOverrideContainer.cs index f13e5ed353..cebdc85955 100644 --- a/osu.Game/Skinning/LocalSkinOverrideContainer.cs +++ b/osu.Game/Skinning/LocalSkinOverrideContainer.cs @@ -7,7 +7,6 @@ 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; namespace osu.Game.Skinning @@ -22,7 +21,7 @@ namespace osu.Game.Skinning public SampleChannel GetSample(string sampleName) => source.GetSample(sampleName) ?? fallbackSource?.GetSample(sampleName); - public Color4? GetComboColour(IHasComboInformation comboObject) => source.GetComboColour(comboObject) ?? fallbackSource?.GetComboColour(comboObject); + public Color4? GetColour(string colourName) => source.GetColour(colourName) ?? fallbackSource?.GetColour(colourName); private readonly ISkinSource source; private ISkinSource fallbackSource; diff --git a/osu.Game/Skinning/Skin.cs b/osu.Game/Skinning/Skin.cs index 641d1d6f8b..6d5196e1e7 100644 --- a/osu.Game/Skinning/Skin.cs +++ b/osu.Game/Skinning/Skin.cs @@ -5,7 +5,6 @@ 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; namespace osu.Game.Skinning @@ -24,8 +23,25 @@ namespace osu.Game.Skinning public abstract Texture GetTexture(string componentName); - public virtual Color4? GetComboColour(IHasComboInformation comboObject) => - Configuration.ComboColours.Count == 0 ? (Color4?)null : Configuration.ComboColours[comboObject.ComboIndex % Configuration.ComboColours.Count]; + public virtual Color4? GetColour(string colourName) + { + var namespaces = colourName.Split('/'); + + switch (namespaces[0]) + { + case "Play": + switch (namespaces[1]) + { + case "Combo": + int index = int.Parse(namespaces[2]); + return Configuration.ComboColours.Count == 0 ? (Color4?)null : Configuration.ComboColours[index % Configuration.ComboColours.Count]; + } + + break; + } + + return null; + } protected Skin(SkinInfo skin) { diff --git a/osu.Game/Skinning/SkinManager.cs b/osu.Game/Skinning/SkinManager.cs index ee11c15dbf..654260daca 100644 --- a/osu.Game/Skinning/SkinManager.cs +++ b/osu.Game/Skinning/SkinManager.cs @@ -14,7 +14,6 @@ using osu.Framework.Graphics.Textures; using osu.Framework.Platform; using osu.Game.Database; using osu.Game.IO.Archives; -using osu.Game.Rulesets.Objects.Types; using OpenTK.Graphics; namespace osu.Game.Skinning @@ -124,6 +123,6 @@ namespace osu.Game.Skinning public SampleChannel GetSample(string sampleName) => CurrentSkin.Value.GetSample(sampleName); - public Color4? GetComboColour(IHasComboInformation comboObject) => CurrentSkin.Value.GetComboColour(comboObject); + public Color4? GetColour(string colourName) => CurrentSkin.Value.GetColour(colourName); } }