diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
index ad203d2107..2f5b4a13d9 100644
--- a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
+++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
@@ -222,10 +222,10 @@ namespace osu.Game.Tests.Beatmaps.Formats
{
var hitObjects = decoder.Decode(stream).HitObjects;
- Assert.AreEqual("hitnormal", getTestableSampleInfo(hitObjects[0]).Name);
- Assert.AreEqual("hitnormal", getTestableSampleInfo(hitObjects[1]).Name);
- Assert.AreEqual("hitnormal2", getTestableSampleInfo(hitObjects[2]).Name);
- Assert.AreEqual("hitnormal", getTestableSampleInfo(hitObjects[3]).Name);
+ Assert.AreEqual("normal-hitnormal", getTestableSampleInfo(hitObjects[0]).LookupNames.First());
+ Assert.AreEqual("normal-hitnormal", getTestableSampleInfo(hitObjects[1]).LookupNames.First());
+ Assert.AreEqual("normal-hitnormal2", getTestableSampleInfo(hitObjects[2]).LookupNames.First());
+ Assert.AreEqual("normal-hitnormal", getTestableSampleInfo(hitObjects[3]).LookupNames.First());
}
SampleInfo getTestableSampleInfo(HitObject hitObject) => hitObject.SampleControlPoint.ApplyTo(new SampleInfo { Name = "hitnormal" });
@@ -242,7 +242,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
Assert.AreEqual("hit_1.wav", hitObjects[0].Samples[0].LookupNames.First());
Assert.AreEqual("hit_2.wav", hitObjects[1].Samples[0].LookupNames.First());
- Assert.AreEqual("hitnormal2", getTestableSampleInfo(hitObjects[2]).Name);
+ Assert.AreEqual("normal-hitnormal2", getTestableSampleInfo(hitObjects[2]).LookupNames.First());
Assert.AreEqual("hit_1.wav", hitObjects[3].Samples[0].LookupNames.First());
}
diff --git a/osu.Game/Audio/SampleInfo.cs b/osu.Game/Audio/SampleInfo.cs
index 7e329ac651..4345d09e05 100644
--- a/osu.Game/Audio/SampleInfo.cs
+++ b/osu.Game/Audio/SampleInfo.cs
@@ -29,6 +29,11 @@ namespace osu.Game.Audio
///
public string Name;
+ ///
+ /// An optional suffix to provide priority lookup. Falls back to non-suffixed .
+ ///
+ public string Suffix;
+
///
/// The sample volume.
///
@@ -42,9 +47,16 @@ namespace osu.Game.Audio
get
{
if (!string.IsNullOrEmpty(Namespace))
+ {
+ if (!string.IsNullOrEmpty(Suffix))
+ yield return $"{Namespace}/{Bank}-{Name}{Suffix}";
yield return $"{Namespace}/{Bank}-{Name}";
+ }
- yield return $"{Bank}-{Name}"; // Without namespace as a fallback even when we have a namespace
+ // check non-namespace as a fallback even when we have a namespace
+ if (!string.IsNullOrEmpty(Suffix))
+ yield return $"{Bank}-{Name}{Suffix}";
+ yield return $"{Bank}-{Name}";
}
}
diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
index 22a6acf459..c8874c3bc7 100644
--- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
+++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
@@ -179,7 +179,7 @@ namespace osu.Game.Beatmaps.Formats
var baseInfo = base.ApplyTo(sampleInfo);
if (CustomSampleBank > 1)
- baseInfo.Name += CustomSampleBank;
+ baseInfo.Suffix = CustomSampleBank.ToString();
return baseInfo;
}