From 8d5f4d4f19f6d71d97892d717baa5abb38b67d6a Mon Sep 17 00:00:00 2001 From: Aergwyn Date: Thu, 28 Dec 2017 18:09:35 +0100 Subject: [PATCH] extend TestCaseSlider with new steps - Hidden, Size and Scale - made Repeats an SliderStep instead --- .../Tests/TestCaseHitCircle.cs | 10 +-- osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs | 86 +++++++++++-------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs b/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs index 3e5201efc7..babe39c41d 100644 --- a/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs +++ b/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs @@ -33,15 +33,15 @@ namespace osu.Game.Rulesets.Osu.Tests { base.Content.Add(content = new OsuInputManager(new RulesetInfo { ID = 0 })); - AddStep("Single", () => addSingle()); - AddStep("Stream", addStream); + AddStep("Single", () => testSingle()); + AddStep("Stream", testStream); AddToggleStep("Auto", v => auto = v); AddToggleStep("Hidden", v => hidden = v); AddSliderStep("CircleSize", 0, 10, 0, s => circleSize = s); AddSliderStep("CircleScale", 0.5f, 2, 1, s => circleScale = s); } - private void addSingle(double timeOffset = 0, Vector2? positionOffset = null) + private void testSingle(double timeOffset = 0, Vector2? positionOffset = null) { positionOffset = positionOffset ?? Vector2.Zero; @@ -70,13 +70,13 @@ namespace osu.Game.Rulesets.Osu.Tests Add(drawable); } - private void addStream() + private void testStream() { Vector2 pos = Vector2.Zero; for (int i = 0; i <= 1000; i += 100) { - addSingle(i, pos); + testSingle(i, pos); pos += new Vector2(10); } } diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs b/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs index 7ce9c35bd5..224e2ea3ef 100644 --- a/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs +++ b/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs @@ -13,6 +13,8 @@ using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Tests.Visual; using OpenTK; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Rulesets.Objects.Drawables; namespace osu.Game.Rulesets.Osu.Tests { @@ -24,26 +26,30 @@ namespace osu.Game.Rulesets.Osu.Tests private readonly Container content; protected override Container Content => content; + private bool hidden; + private int repeats; + private int depthIndex; + private int circleSize; + private float circleScale; private double speedMultiplier = 2; private double sliderMultiplier = 2; - private int depthIndex; public TestCaseSlider() { base.Content.Add(content = new OsuInputManager(new RulesetInfo { ID = 0 })); - AddStep("Single", () => addSingle()); - AddStep("Repeated (1)", () => addRepeated(1)); - AddStep("Repeated (2)", () => addRepeated(2)); - AddStep("Repeated (3)", () => addRepeated(3)); - AddStep("Repeated (4)", () => addRepeated(4)); - AddStep("Stream", addStream); - - AddSliderStep("SpeedMultiplier", 0.01, 10, 2, s => speedMultiplier = s); - AddSliderStep("SliderMultiplier", 0.01, 10, 2, s => sliderMultiplier = s); + AddStep("Single", () => testSingle()); + AddStep("Stream", testStream); + AddStep("Repeated", () => testRepeated(repeats)); + AddToggleStep("Hidden", v => hidden = v); + AddSliderStep("Repeats", 1, 10, 1, s => repeats = s); + AddSliderStep("CircleSize", 0, 10, 0, s => circleSize = s); + AddSliderStep("CircleScale", 0.5f, 2, 1, s => circleScale = s); + AddSliderStep("SpeedMultiplier", 0.1, 10, 2, s => speedMultiplier = s); + AddSliderStep("SliderMultiplier", 0.1, 10, 2, s => sliderMultiplier = s); } - private void addSingle(double timeOffset = 0, Vector2? positionOffset = null) + private void testSingle(double timeOffset = 0, Vector2? positionOffset = null) { positionOffset = positionOffset ?? Vector2.Zero; @@ -59,24 +65,10 @@ namespace osu.Game.Rulesets.Osu.Tests Distance = 400, }; - var cpi = new ControlPointInfo(); - cpi.DifficultyPoints.Add(new DifficultyControlPoint { SpeedMultiplier = speedMultiplier }); - - var difficulty = new BeatmapDifficulty - { - SliderMultiplier = (float)sliderMultiplier, - CircleSize = 0 - }; - - slider.ApplyDefaults(cpi, difficulty); - Add(new DrawableSlider(slider) - { - Anchor = Anchor.Centre, - Depth = depthIndex++ - }); + addSlider(slider); } - private void addRepeated(int repeats) + private void testRepeated(int repeats) { // The first run through the slider is considered a repeat repeats++; @@ -99,32 +91,50 @@ namespace osu.Game.Rulesets.Osu.Tests RepeatSamples = repeatSamples }; + addSlider(slider); + } + + private void testStream() + { + Vector2 pos = Vector2.Zero; + + for (int i = 0; i <= 1000; i += 100) + { + testSingle(i, pos); + pos += new Vector2(10); + } + } + + private void addSlider(Slider slider) + { var cpi = new ControlPointInfo(); cpi.DifficultyPoints.Add(new DifficultyControlPoint { SpeedMultiplier = speedMultiplier }); var difficulty = new BeatmapDifficulty { SliderMultiplier = (float)sliderMultiplier, - CircleSize = 0 + CircleSize = circleSize }; slider.ApplyDefaults(cpi, difficulty); - Add(new DrawableSlider(slider) + + var drawable = new DrawableSlider(slider) { Anchor = Anchor.Centre, + Scale = new Vector2(circleScale), Depth = depthIndex++ - }); + }; + + if (hidden) + drawable.ApplyCustomUpdateState += new TestOsuModHidden().CustomSequence; + + Add(drawable); } - private void addStream() + private class TestOsuModHidden : OsuModHidden { - Vector2 pos = Vector2.Zero; - - for (int i = 0; i <= 1000; i += 100) - { - addSingle(i, pos); - pos += new Vector2(10); - } + public new void CustomSequence(DrawableHitObject drawable, ArmedState state) => base.CustomSequence(drawable, state); } } + }