mirror of
https://github.com/ppy/osu.git
synced 2025-01-18 11:52:54 +08:00
Add test scene for OsuModTargetPractice
This commit is contained in:
parent
012af39c7d
commit
a3adceb51c
@ -0,0 +1,114 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using NUnit.Framework;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Beatmaps.ControlPoints;
|
||||||
|
using osu.Game.Rulesets.Osu.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Osu.Tests.Mods
|
||||||
|
{
|
||||||
|
public partial class TestSceneOsuModTargetPractice : OsuModTestScene
|
||||||
|
{
|
||||||
|
[TestCase(1)]
|
||||||
|
[TestCase(2000)]
|
||||||
|
[TestCase(3000000)]
|
||||||
|
public void TestSeed(int seed) => CreateModTest(new ModTestData
|
||||||
|
{
|
||||||
|
Mod = new OsuModTargetPractice
|
||||||
|
{
|
||||||
|
Seed = { Value = seed }
|
||||||
|
},
|
||||||
|
Autoplay = true,
|
||||||
|
PassCondition = () => true
|
||||||
|
});
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestMetronome([Values] bool metronome) => CreateModTest(new ModTestData
|
||||||
|
{
|
||||||
|
Mod = new OsuModTargetPractice
|
||||||
|
{
|
||||||
|
Metronome = { Value = metronome }
|
||||||
|
},
|
||||||
|
Autoplay = true,
|
||||||
|
PassCondition = () => true
|
||||||
|
});
|
||||||
|
|
||||||
|
[TestCase(1)]
|
||||||
|
[TestCase(2)]
|
||||||
|
[TestCase(3)]
|
||||||
|
[TestCase(4)]
|
||||||
|
public void TestBeatLengthDivisor(double beatLengthDivisor) => CreateModTest(new ModTestData
|
||||||
|
{
|
||||||
|
Mod = new OsuModTargetPractice
|
||||||
|
{
|
||||||
|
BeatLengthDivisor = { Value = beatLengthDivisor }
|
||||||
|
},
|
||||||
|
Autoplay = true,
|
||||||
|
PassCondition = () => true
|
||||||
|
});
|
||||||
|
|
||||||
|
[TestCase(1)]
|
||||||
|
[TestCase(2)]
|
||||||
|
[TestCase(3)]
|
||||||
|
[TestCase(4)]
|
||||||
|
public void TestVariableTimingPointBeatmap(double beatLengthDivisor) => CreateModTest(new ModTestData
|
||||||
|
{
|
||||||
|
Mod = new OsuModTargetPractice
|
||||||
|
{
|
||||||
|
BeatLengthDivisor = { Value = beatLengthDivisor }
|
||||||
|
},
|
||||||
|
Beatmap = variableTimingPointBeatmap,
|
||||||
|
Autoplay = true,
|
||||||
|
PassCondition = () => true
|
||||||
|
});
|
||||||
|
|
||||||
|
private OsuBeatmap variableTimingPointBeatmap =>
|
||||||
|
createHitCircleBeatmap(256, 60, 8 * 60);
|
||||||
|
|
||||||
|
private OsuBeatmap createHitCircleBeatmap(int objectsNumber, int interval, int beatLength)
|
||||||
|
{
|
||||||
|
var controlPointInfo = new ControlPointInfo();
|
||||||
|
controlPointInfo.Add(0, new TimingControlPoint
|
||||||
|
{
|
||||||
|
Time = 0,
|
||||||
|
BeatLength = beatLength
|
||||||
|
});
|
||||||
|
controlPointInfo.Add(64 * interval, new TimingControlPoint
|
||||||
|
{
|
||||||
|
Time = 0,
|
||||||
|
BeatLength = beatLength * 2
|
||||||
|
});
|
||||||
|
controlPointInfo.Add(128 * interval, new TimingControlPoint
|
||||||
|
{
|
||||||
|
Time = 0,
|
||||||
|
BeatLength = beatLength / 2
|
||||||
|
});
|
||||||
|
controlPointInfo.Add(192 * interval, new TimingControlPoint
|
||||||
|
{
|
||||||
|
Time = 0,
|
||||||
|
BeatLength = beatLength * 1.5
|
||||||
|
});
|
||||||
|
|
||||||
|
var beatmap = new OsuBeatmap
|
||||||
|
{
|
||||||
|
BeatmapInfo = new BeatmapInfo
|
||||||
|
{
|
||||||
|
StackLeniency = 0
|
||||||
|
},
|
||||||
|
ControlPointInfo = controlPointInfo
|
||||||
|
};
|
||||||
|
for (int i = 0; i < objectsNumber; i++)
|
||||||
|
{
|
||||||
|
beatmap.HitObjects.Add(new HitCircle
|
||||||
|
{
|
||||||
|
StartTime = interval * beatmap.HitObjects.Count
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return beatmap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user