From cb18baa4d86e526d7d8ebf6cf6cb45618b07fe3f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 27 Dec 2017 17:34:07 +0900 Subject: [PATCH] Add HitCircle/Slider testcases --- .../Objects/Drawables/DrawableSlider.cs | 5 -- .../Objects/ISliderProgress.cs | 10 +++ .../Tests/TestCaseHitCircle.cs | 51 +++++++++++ osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs | 88 +++++++++++++++++++ .../osu.Game.Rulesets.Osu.csproj | 3 + 5 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Objects/ISliderProgress.cs create mode 100644 osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs create mode 100644 osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index d8a22d94ca..41d5ef1b02 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -167,9 +167,4 @@ protected override void UpdateCurrentState(ArmedState state) public override Vector2 SelectionPoint => ToScreenSpace(body.Position); public override Quad SelectionQuad => body.PathDrawQuad; } - - internal interface ISliderProgress - { - void UpdateProgress(double progress, int repeat); - } } diff --git a/osu.Game.Rulesets.Osu/Objects/ISliderProgress.cs b/osu.Game.Rulesets.Osu/Objects/ISliderProgress.cs new file mode 100644 index 0000000000..cb0d177a60 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Objects/ISliderProgress.cs @@ -0,0 +1,10 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +namespace osu.Game.Rulesets.Osu.Objects +{ + public interface ISliderProgress + { + void UpdateProgress(double progress, int repeat); + } +} diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs b/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs new file mode 100644 index 0000000000..a86101285a --- /dev/null +++ b/osu.Game.Rulesets.Osu/Tests/TestCaseHitCircle.cs @@ -0,0 +1,51 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Tests.Visual; +using OpenTK; + +namespace osu.Game.Rulesets.Osu.Tests +{ + public class TestCaseHitCircle : OsuTestCase + { + private readonly Container content; + protected override Container Content => content; + + public TestCaseHitCircle() + { + base.Content.Add(content = new OsuInputManager(new RulesetInfo { ID = 0 })); + + AddStep("Single", addHitCircle); + AddStep("Stream", addStream); + } + + private void addHitCircle() + { + var circle = new HitCircle { StartTime = Time.Current + 1000 }; + circle.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); + + Add(new DrawableHitCircle(circle) { Anchor = Anchor.Centre }); + } + + private void addStream() + { + Vector2 pos = Vector2.Zero; + + for (int i = 1000; i <= 2000; i += 100) + { + var circle = new HitCircle { StartTime = Time.Current + i, Position = pos }; + circle.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); + + Add(new DrawableHitCircle(circle) { Anchor = Anchor.Centre, Depth = i}); + + pos += new Vector2(10); + } + } + } +} diff --git a/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs b/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs new file mode 100644 index 0000000000..c423ca3736 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Tests/TestCaseSlider.cs @@ -0,0 +1,88 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System; +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Audio; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; +using osu.Game.Tests.Visual; +using OpenTK; + +namespace osu.Game.Rulesets.Osu.Tests +{ + public class TestCaseSlider : OsuTestCase + { + public override IReadOnlyList RequiredTypes => new[] { typeof(DrawableSlider) }; + + private readonly Container content; + protected override Container Content => content; + + 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); + } + + private void addSingle() + { + var slider = new Slider + { + StartTime = Time.Current + 1000, + Position = new Vector2(-200, 0), + ControlPoints = new List + { + new Vector2(-200, 0), + new Vector2(400, 0), + }, + Distance = 400, + Velocity = 1, + TickDistance = 100, + }; + + slider.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); + + Add(new DrawableSlider(slider) { Anchor = Anchor.Centre }); + } + + private void addRepeated(int repeats) + { + var slider = new Slider + { + StartTime = Time.Current + 1000, + Position = new Vector2(-200, 0), + ControlPoints = new List + { + new Vector2(-200, 0), + new Vector2(400, 0), + }, + Distance = 400, + Velocity = 11, + TickDistance = 100, + RepeatCount = repeats, + RepeatSamples = new List[repeats].ToList() + }; + + slider.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); + + Add(new DrawableSlider(slider) { Anchor = Anchor.Centre }); + } + + private void addStream() + { + + } + } +} diff --git a/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj index 6e61d7fb2d..d99f8bc948 100644 --- a/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj +++ b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj @@ -75,6 +75,7 @@ + @@ -86,8 +87,10 @@ + +