diff --git a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs index 28915b2c4a..f0ebd7a8cc 100644 --- a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs +++ b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Graphics.Audio; @@ -16,6 +17,7 @@ using osu.Framework.IO.Stores; using osu.Framework.Testing; using osu.Framework.Utils; using osu.Game.Audio; +using osu.Game.Configuration; using osu.Game.Database; using osu.Game.IO; using osu.Game.Rulesets; @@ -35,6 +37,9 @@ namespace osu.Game.Tests.Gameplay [HeadlessTest] public class TestSceneStoryboardSamples : OsuTestScene, IStorageResourceProvider { + [Resolved] + private OsuConfigManager config { get; set; } + [Test] public void TestRetrieveTopLevelSample() { @@ -166,6 +171,39 @@ namespace osu.Game.Tests.Gameplay ((IApplicableToRate)testedMod).ApplyToRate(sampleInfo.StartTime))); } + [Test] + public void TestSamplePlaybackWithBeatmapHitsoundsOff() + { + GameplayClockContainer gameplayContainer = null; + TestDrawableStoryboardSample sample = null; + + AddStep("disable beatmap hitsounds", () => config.SetValue(OsuSetting.BeatmapHitsounds, false)); + + AddStep("setup storyboard sample", () => + { + Beatmap.Value = new TestCustomSkinWorkingBeatmap(new OsuRuleset().RulesetInfo, this); + + var beatmapSkinSourceContainer = new BeatmapSkinProvidingContainer(Beatmap.Value.Skin); + + Add(gameplayContainer = new MasterGameplayClockContainer(Beatmap.Value, 0) + { + Child = beatmapSkinSourceContainer + }); + + beatmapSkinSourceContainer.Add(sample = new TestDrawableStoryboardSample(new StoryboardSampleInfo("test-sample", 1, 1)) + { + Clock = gameplayContainer.GameplayClock + }); + }); + + AddStep("start", () => gameplayContainer.Start()); + + AddUntilStep("sample played", () => sample.IsPlayed); + AddUntilStep("sample has lifetime end", () => sample.LifetimeEnd < double.MaxValue); + + AddStep("restore default", () => config.GetBindable(OsuSetting.BeatmapHitsounds).SetDefault()); + } + private class TestSkin : LegacySkin { public TestSkin(string resourceName, IStorageResourceProvider resources)