diff --git a/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs
index e64178083a..9ba544ed59 100644
--- a/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs
+++ b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs
@@ -11,6 +11,7 @@ using osu.Game.Audio;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Skinning;
+using System.Collections.Generic;
namespace osu.Game.Rulesets.Mania.Skinning
{
@@ -19,6 +20,36 @@ namespace osu.Game.Rulesets.Mania.Skinning
private readonly ISkin source;
private readonly ManiaBeatmap beatmap;
+ ///
+ /// Mapping of to ther corresponding
+ /// value.
+ ///
+ private static readonly IReadOnlyDictionary componentMapping
+ = new Dictionary
+ {
+ { HitResult.Perfect, LegacyManiaSkinConfigurationLookups.Hit300g },
+ { HitResult.Great, LegacyManiaSkinConfigurationLookups.Hit300 },
+ { HitResult.Good, LegacyManiaSkinConfigurationLookups.Hit200 },
+ { HitResult.Ok, LegacyManiaSkinConfigurationLookups.Hit100 },
+ { HitResult.Meh, LegacyManiaSkinConfigurationLookups.Hit50 },
+ { HitResult.Miss, LegacyManiaSkinConfigurationLookups.Hit0 }
+ };
+
+ ///
+ /// Mapping of to their corresponding
+ /// default filenames.
+ ///
+ private static readonly IReadOnlyDictionary defaultName
+ = new Dictionary
+ {
+ { HitResult.Perfect, "mania-hit300g" },
+ { HitResult.Great, "mania-hit300" },
+ { HitResult.Good, "mania-hit200" },
+ { HitResult.Ok, "mania-hit100" },
+ { HitResult.Meh, "mania-hit50" },
+ { HitResult.Miss, "mania-hit0" }
+ };
+
private Lazy isLegacySkin;
///
@@ -47,15 +78,15 @@ namespace osu.Game.Rulesets.Mania.Skinning
public Drawable GetDrawableComponent(ISkinComponent component)
{
+ if (!isLegacySkin.Value || !hasKeyTexture.Value)
+ return null;
+
switch (component)
{
case GameplaySkinComponent resultComponent:
- return getResult(resultComponent);
+ return getResult(resultComponent.Component);
case ManiaSkinComponent maniaComponent:
- if (!isLegacySkin.Value || !hasKeyTexture.Value)
- return null;
-
switch (maniaComponent.Component)
{
case ManiaSkinComponents.ColumnBackground:
@@ -95,30 +126,13 @@ namespace osu.Game.Rulesets.Mania.Skinning
return null;
}
- private Drawable getResult(GameplaySkinComponent resultComponent)
+ private Drawable getResult(HitResult result)
{
- switch (resultComponent.Component)
- {
- case HitResult.Miss:
- return this.GetAnimation("mania-hit0", true, true);
+ string image = GetConfig(
+ new ManiaSkinConfigurationLookup(componentMapping[result])
+ )?.Value ?? defaultName[result];
- case HitResult.Meh:
- return this.GetAnimation("mania-hit50", true, true);
-
- case HitResult.Ok:
- return this.GetAnimation("mania-hit100", true, true);
-
- case HitResult.Good:
- return this.GetAnimation("mania-hit200", true, true);
-
- case HitResult.Great:
- return this.GetAnimation("mania-hit300", true, true);
-
- case HitResult.Perfect:
- return this.GetAnimation("mania-hit300g", true, true);
- }
-
- return null;
+ return this.GetAnimation(image, true, true);
}
public Texture GetTexture(string componentName) => source.GetTexture(componentName);
diff --git a/osu.Game/Skinning/LegacyManiaSkinConfigurationLookup.cs b/osu.Game/Skinning/LegacyManiaSkinConfigurationLookup.cs
index c76d5c8784..4990ca8e60 100644
--- a/osu.Game/Skinning/LegacyManiaSkinConfigurationLookup.cs
+++ b/osu.Game/Skinning/LegacyManiaSkinConfigurationLookup.cs
@@ -43,6 +43,12 @@ namespace osu.Game.Skinning
MinimumColumnWidth,
LeftStageImage,
RightStageImage,
- BottomStageImage
+ BottomStageImage,
+ Hit300g,
+ Hit300,
+ Hit200,
+ Hit100,
+ Hit50,
+ Hit0,
}
}
diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs
index 003fa24d5b..390dc871e4 100644
--- a/osu.Game/Skinning/LegacySkin.cs
+++ b/osu.Game/Skinning/LegacySkin.cs
@@ -257,6 +257,24 @@ namespace osu.Game.Skinning
case LegacyManiaSkinConfigurationLookups.RightLineWidth:
Debug.Assert(maniaLookup.TargetColumn != null);
return SkinUtils.As(new Bindable(existing.ColumnLineWidth[maniaLookup.TargetColumn.Value + 1]));
+
+ case LegacyManiaSkinConfigurationLookups.Hit0:
+ return SkinUtils.As(getManiaImage(existing, "Hit0"));
+
+ case LegacyManiaSkinConfigurationLookups.Hit50:
+ return SkinUtils.As(getManiaImage(existing, "Hit50"));
+
+ case LegacyManiaSkinConfigurationLookups.Hit100:
+ return SkinUtils.As(getManiaImage(existing, "Hit100"));
+
+ case LegacyManiaSkinConfigurationLookups.Hit200:
+ return SkinUtils.As(getManiaImage(existing, "Hit200"));
+
+ case LegacyManiaSkinConfigurationLookups.Hit300:
+ return SkinUtils.As(getManiaImage(existing, "Hit300"));
+
+ case LegacyManiaSkinConfigurationLookups.Hit300g:
+ return SkinUtils.As(getManiaImage(existing, "Hit300g"));
}
return null;