mirror of
https://github.com/osukey/osukey.git
synced 2025-06-29 07:07:55 +09:00
Add test to ensure spinners only complete
No bonus or a non-300 judgement
This commit is contained in:
parent
c1777f20e1
commit
95b1bffffe
@ -14,6 +14,7 @@ using osu.Game.Rulesets.Osu.Mods;
|
|||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
using osu.Game.Rulesets.Osu.Objects.Drawables;
|
using osu.Game.Rulesets.Osu.Objects.Drawables;
|
||||||
using osu.Game.Rulesets.Osu.Skinning.Default;
|
using osu.Game.Rulesets.Osu.Skinning.Default;
|
||||||
|
using osu.Game.Screens.Play;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Tests.Mods
|
namespace osu.Game.Rulesets.Osu.Tests.Mods
|
||||||
@ -57,7 +58,6 @@ namespace osu.Game.Rulesets.Osu.Tests.Mods
|
|||||||
if (Precision.AlmostEquals(counter.Result.Value, 0, 1))
|
if (Precision.AlmostEquals(counter.Result.Value, 0, 1))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
double rateIndependentElapsedTime = spinner.Clock.ElapsedFrameTime / spinner.Clock.Rate;
|
|
||||||
float rotationSpeed = (float)(1.01 * spinner.HitObject.SpinsRequired / spinner.HitObject.Duration);
|
float rotationSpeed = (float)(1.01 * spinner.HitObject.SpinsRequired / spinner.HitObject.Duration);
|
||||||
|
|
||||||
return Precision.AlmostEquals(counter.Result.Value, rotationSpeed * 1000 * 60, 1);
|
return Precision.AlmostEquals(counter.Result.Value, rotationSpeed * 1000 * 60, 1);
|
||||||
@ -65,6 +65,27 @@ namespace osu.Game.Rulesets.Osu.Tests.Mods
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestSpinnerOnlyComplete() => CreateModTest(new ModTestData
|
||||||
|
{
|
||||||
|
Mod = new OsuModSpunOut(),
|
||||||
|
Autoplay = false,
|
||||||
|
Beatmap = singleSpinnerBeatmap,
|
||||||
|
PassCondition = () =>
|
||||||
|
{
|
||||||
|
var spinner = Player.ChildrenOfType<DrawableSpinner>().SingleOrDefault();
|
||||||
|
var gameplayClockContainer = Player.ChildrenOfType<GameplayClockContainer>().SingleOrDefault();
|
||||||
|
|
||||||
|
if (spinner == null || gameplayClockContainer == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!Precision.AlmostEquals(gameplayClockContainer.CurrentTime, spinner.HitObject.StartTime + spinner.HitObject.Duration, 200.0f))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return Precision.AlmostEquals(spinner.Progress, 1.0f, 0.05f) && Precision.AlmostEquals(spinner.GainedBonus.Value, 0, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
private Beatmap singleSpinnerBeatmap => new Beatmap
|
private Beatmap singleSpinnerBeatmap => new Beatmap
|
||||||
{
|
{
|
||||||
HitObjects = new List<HitObject>
|
HitObjects = new List<HitObject>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user