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 <bool>(OsuSetting.BeatmapHitsounds).SetDefault());
        }
Exemple #2
0
        public void TestSamplePlaybackWithRateMods(Type expectedMod, double expectedRate)
        {
            GameplayClockContainer       gameplayContainer = null;
            TestDrawableStoryboardSample sample            = null;

            Mod testedMod = Activator.CreateInstance(expectedMod) as Mod;

            switch (testedMod)
            {
            case ModRateAdjust m:
                m.SpeedChange.Value = expectedRate;
                break;

            case ModTimeRamp m:
                m.InitialRate.Value = m.FinalRate.Value = expectedRate;
                break;
            }

            AddStep("setup storyboard sample", () =>
            {
                Beatmap.Value      = new TestCustomSkinWorkingBeatmap(new OsuRuleset().RulesetInfo, Audio);
                SelectedMods.Value = new[] { testedMod };

                Add(gameplayContainer = new GameplayClockContainer(Beatmap.Value, SelectedMods.Value, 0));

                gameplayContainer.Add(sample = new TestDrawableStoryboardSample(new StoryboardSampleInfo("test-sample", 1, 1))
                {
                    Clock = gameplayContainer.GameplayClock
                });
            });

            AddStep("start", () => gameplayContainer.Start());

            AddAssert("sample playback rate matches mod rates", () => sample.Channel.AggregateFrequency.Value == expectedRate);
        }
        public void TestSamplePlaybackWithRateMods(Type expectedMod, double expectedRate)
        {
            GameplayClockContainer       gameplayContainer = null;
            StoryboardSampleInfo         sampleInfo        = null;
            TestDrawableStoryboardSample sample            = null;

            Mod testedMod = Activator.CreateInstance(expectedMod) as Mod;

            switch (testedMod)
            {
            case ModRateAdjust m:
                m.SpeedChange.Value = expectedRate;
                break;

            case ModTimeRamp m:
                m.FinalRate.Value = m.InitialRate.Value = expectedRate;
                break;
            }

            AddStep("setup storyboard sample", () =>
            {
                Beatmap.Value      = new TestCustomSkinWorkingBeatmap(new OsuRuleset().RulesetInfo, this);
                SelectedMods.Value = new[] { testedMod };

                var beatmapSkinSourceContainer = new BeatmapSkinProvidingContainer(Beatmap.Value.Skin);

                Add(gameplayContainer = new MasterGameplayClockContainer(Beatmap.Value, 0)
                {
                    Child = beatmapSkinSourceContainer
                });

                beatmapSkinSourceContainer.Add(sample = new TestDrawableStoryboardSample(sampleInfo = new StoryboardSampleInfo("test-sample", 1, 1))
                {
                    Clock = gameplayContainer.GameplayClock
                });
            });

            AddStep("start", () => gameplayContainer.Start());

            AddAssert("sample playback rate matches mod rates", () =>
                      testedMod != null && Precision.AlmostEquals(
                          sample.ChildrenOfType <DrawableSample>().First().AggregateFrequency.Value,
                          ((IApplicableToRate)testedMod).ApplyToRate(sampleInfo.StartTime)));
        }