1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 02:02:53 +08:00

Merge branch 'master' into CakeBuildImprovements

This commit is contained in:
Dean Herbert 2019-02-18 01:38:55 +09:00 committed by GitHub
commit d0c603e8e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1188 additions and 0 deletions

View File

@ -0,0 +1,24 @@
// 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.Rulesets.Catch.Difficulty;
using osu.Game.Rulesets.Difficulty;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Rulesets.Catch.Tests
{
public class CatchDifficultyCalculatorTest : DifficultyCalculatorTest
{
protected override string ResourceAssembly => "osu.Game.Rulesets.Catch";
[TestCase(3.8664391043534758, "diffcalc-test")]
public void Test(double expected, string name)
=> base.Test(expected, name);
protected override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new CatchDifficultyCalculator(new CatchRuleset(), beatmap);
protected override Ruleset CreateRuleset() => new CatchRuleset();
}
}

View File

@ -0,0 +1,138 @@
osu file format v14
[General]
StackLeniency: 0.3
Mode: 2
[Difficulty]
CircleSize:4
OverallDifficulty:7
ApproachRate:8.3
SliderMultiplier:1.6
SliderTickRate:1
[TimingPoints]
500,500,4,2,1,50,1,0
34500,-50,4,2,1,50,0,0
[HitObjects]
// fruits spaced 1/1 beat apart
32,128,0,5,0,0:0:0:0:
96,128,500,1,0,0:0:0:0:
160,128,1000,1,0,0:0:0:0:
224,128,1500,1,0,0:0:0:0:
288,128,2000,1,0,0:0:0:0:
352,128,2500,1,0,0:0:0:0:
416,128,3000,1,0,0:0:0:0:
480,128,3500,1,0,0:0:0:0:
// fruits spaced 1/2 beat apart
32,160,4500,1,0,0:0:0:0:
64,160,4750,1,0,0:0:0:0:
96,160,5000,1,0,0:0:0:0:
128,160,5250,1,0,0:0:0:0:
160,160,5500,1,0,0:0:0:0:
192,160,5750,1,0,0:0:0:0:
224,160,6000,1,0,0:0:0:0:
256,160,6250,1,0,0:0:0:0:
288,160,6500,1,0,0:0:0:0:
// fruits spaced 1/4 beat apart
96,128,7500,1,0,0:0:0:0:
128,128,7625,1,0,0:0:0:0:
160,128,7750,1,0,0:0:0:0:
192,128,7875,1,0,0:0:0:0:
224,128,8000,1,0,0:0:0:0:
256,128,8125,1,0,0:0:0:0:
288,128,8250,1,0,0:0:0:0:
320,128,8375,1,0,0:0:0:0:
352,128,8500,1,0,0:0:0:0:
// fruit hyperdashes, spaced 1/2 beat apart
32,160,9500,1,0,0:0:0:0:
480,160,9750,1,0,0:0:0:0:
32,160,10000,1,0,0:0:0:0:
480,160,10250,1,0,0:0:0:0:
32,160,10500,1,0,0:0:0:0:
480,160,10750,1,0,0:0:0:0:
32,160,11000,1,0,0:0:0:0:
// fruit hyperdashes, spaced 1/4 beat apart
32,192,12000,1,0,0:0:0:0:
480,192,12125,1,0,0:0:0:0:
32,192,12250,1,0,0:0:0:0:
480,192,12375,1,0,0:0:0:0:
32,192,12500,1,0,0:0:0:0:
480,192,12625,1,0,0:0:0:0:
32,192,12750,1,0,0:0:0:0:
480,192,12875,1,0,0:0:0:0:
32,192,13000,1,0,0:0:0:0:
// stream + hyperdash + stream, spaced 1/4 beat apart
32,192,14000,1,0,0:0:0:0:
64,192,14125,1,0,0:0:0:0:
96,192,14250,1,0,0:0:0:0:
128,192,14375,1,0,0:0:0:0:
480,192,14500,1,0,0:0:0:0:
448,192,14625,1,0,0:0:0:0:
416,192,14750,1,0,0:0:0:0:
384,192,14875,1,0,0:0:0:0:
32,192,15000,1,0,0:0:0:0:
// basic sliders
32,192,16000,2,0,L|192:192,1,160
224,192,17000,2,0,L|384:192,1,160
416,192,17875,2,0,L|480:192,1,40
// slider hyperdashes, spaced 1/4 beat apart
32,192,19000,2,0,L|128:192,1,80
480,192,19375,2,0,L|384:192,1,80
352,192,19750,2,0,L|256:192,1,80
0,192,20125,2,0,L|128:192,1,120
// stream + slider hyperdashes, spaced 1/4 beat apart
32,192,21500,1,0,0:0:0:0:
64,192,21625,1,0,0:0:0:0:
96,192,21750,1,0,0:0:0:0:
512,192,21875,2,0,L|320:192,1,160
320,192,22500,1,0,0:0:0:0:
288,192,22625,1,0,0:0:0:0:
256,192,22750,1,0,0:0:0:0:
0,192,22875,2,0,L|64:192,1,40
// streams, spaced 1/4 beat apart
64,192,24000,1,0,0:0:0:0:
160,192,24125,1,0,0:0:0:0:
64,192,24250,1,0,0:0:0:0:
160,192,24375,1,0,0:0:0:0:
64,192,24500,1,0,0:0:0:0:
160,192,24625,1,0,0:0:0:0:
64,192,24750,1,0,0:0:0:0:
160,192,24875,1,0,0:0:0:0:
64,192,25000,1,0,0:0:0:0:
160,192,25125,1,0,0:0:0:0:
64,192,25250,1,0,0:0:0:0:
160,192,25375,1,0,0:0:0:0:
64,192,25500,1,0,0:0:0:0:
// stream + spinner combo, spaced 1/4 beat apart
256,192,26500,12,0,27000,0:0:0:0:
128,192,27250,5,0,0:0:0:0:
128,192,27375,1,0,0:0:0:0:
160,192,27500,1,0,0:0:0:0:
192,192,27625,1,0,0:0:0:0:
256,192,27750,12,0,28500,0:0:0:0:
192,192,28625,5,0,0:0:0:0:
224,192,28750,1,0,0:0:0:0:
256,192,28875,1,0,0:0:0:0:
256,192,29000,1,0,0:0:0:0:
256,192,29125,12,0,29500,0:0:0:0:
// long slow slider
0,192,30500,6,0,B|480:192|480:192|0:192,2,960
// long fast slider
0,192,37500,6,0,B|480:192|480:192|0:192,2,960
// long hyperdash slider
0,192,41500,2,0,P|544:192|544:192,5,480

View File

@ -0,0 +1,24 @@
// 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.Rulesets.Difficulty;
using osu.Game.Rulesets.Mania.Difficulty;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Rulesets.Mania.Tests
{
public class ManiaDifficultyCalculatorTest : DifficultyCalculatorTest
{
protected override string ResourceAssembly => "osu.Game.Rulesets.Mania";
[TestCase(2.2676066895468976, "diffcalc-test")]
public void Test(double expected, string name)
=> base.Test(expected, name);
protected override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new ManiaDifficultyCalculator(new ManiaRuleset(), beatmap);
protected override Ruleset CreateRuleset() => new ManiaRuleset();
}
}

View File

@ -0,0 +1,180 @@
osu file format v14
[General]
Mode: 3
[Difficulty]
CircleSize:4
OverallDifficulty:7
ApproachRate:8.3
SliderMultiplier:1.6
SliderTickRate:1
[TimingPoints]
500,500,4,2,1,50,1,0
37500,-50,4,2,1,50,0,0
41500,-25,4,2,1,50,0,0
[HitObjects]
// jacks spaced 1/1 beat apart
64,192,0,1,0,0:0:0:0:
64,192,500,1,0,0:0:0:0:
64,192,1000,1,0,0:0:0:0:
64,192,1500,1,0,0:0:0:0:
64,192,2000,1,0,0:0:0:0:
64,192,2500,1,0,0:0:0:0:
// jacks spaced 1/2 beat apart
64,192,3500,1,0,0:0:0:0:
64,192,3750,1,0,0:0:0:0:
64,192,4000,1,0,0:0:0:0:
64,192,4250,1,0,0:0:0:0:
64,192,4500,1,0,0:0:0:0:
64,192,4750,1,0,0:0:0:0:
64,192,5000,1,0,0:0:0:0:
64,192,6000,1,0,0:0:0:0:
// doubles jacks spaced 1/2 beat apart
192,192,6000,1,0,0:0:0:0:
64,192,6250,1,0,0:0:0:0:
192,192,6250,1,0,0:0:0:0:
64,192,6500,1,0,0:0:0:0:
192,192,6500,1,0,0:0:0:0:
64,192,6750,1,0,0:0:0:0:
192,192,6750,1,0,0:0:0:0:
64,192,7000,1,0,0:0:0:0:
192,192,7000,1,0,0:0:0:0:
64,192,7250,1,0,0:0:0:0:
192,192,7250,1,0,0:0:0:0:
64,192,7500,1,0,0:0:0:0:
192,192,7500,1,0,0:0:0:0:
// trill spaced 1/2 beat apart
64,192,8500,1,0,0:0:0:0:
192,192,8750,1,0,0:0:0:0:
64,192,9000,1,0,0:0:0:0:
192,192,9250,1,0,0:0:0:0:
64,192,9500,1,0,0:0:0:0:
192,192,9750,1,0,0:0:0:0:
64,192,10000,1,0,0:0:0:0:
192,192,10250,1,0,0:0:0:0:
64,192,10500,1,0,0:0:0:0:
// stair spaced 1/4 apart
64,192,11500,1,0,0:0:0:0:
192,192,11625,1,0,0:0:0:0:
320,192,11750,1,0,0:0:0:0:
448,192,11875,1,0,0:0:0:0:
320,192,12000,1,0,0:0:0:0:
192,192,12125,1,0,0:0:0:0:
64,192,12250,1,0,0:0:0:0:
192,192,12375,1,0,0:0:0:0:
320,192,12500,1,0,0:0:0:0:
448,192,12625,1,0,0:0:0:0:
// jumpstreams?
64,192,13500,1,0,0:0:0:0:
192,192,13625,1,0,0:0:0:0:
320,192,13750,1,0,0:0:0:0:
448,192,13875,1,0,0:0:0:0:
320,192,14000,1,0,0:0:0:0:
192,192,14000,1,0,0:0:0:0:
64,192,14125,1,0,0:0:0:0:
192,192,14250,1,0,0:0:0:0:
320,192,14250,1,0,0:0:0:0:
448,192,14250,1,0,0:0:0:0:
64,192,14375,1,0,0:0:0:0:
64,192,14500,1,0,0:0:0:0:
320,192,14625,1,0,0:0:0:0:
448,192,14625,1,0,0:0:0:0:
192,192,14625,1,0,0:0:0:0:
192,192,14750,1,0,0:0:0:0:
64,192,14875,1,0,0:0:0:0:
192,192,15000,1,0,0:0:0:0:
320,192,15125,1,0,0:0:0:0:
448,192,15125,1,0,0:0:0:0:
// double... jumps?
64,192,16000,1,0,0:0:0:0:
64,192,16250,1,0,0:0:0:0:
192,192,16250,1,0,0:0:0:0:
192,192,16500,1,0,0:0:0:0:
320,192,16500,1,0,0:0:0:0:
320,192,16750,1,0,0:0:0:0:
448,192,16750,1,0,0:0:0:0:
448,192,17000,1,0,0:0:0:0:
// notes alongside hold
64,192,18000,128,0,18500:0:0:0:0:
192,192,18000,1,0,0:0:0:0:
192,192,18250,1,0,0:0:0:0:
192,192,18500,1,0,0:0:0:0:
// notes overlapping hold
64,192,19500,1,0,0:0:0:0:
192,192,19625,128,0,20875:0:0:0:0:
64,192,19750,1,0,0:0:0:0:
64,192,20000,1,0,0:0:0:0:
64,192,20250,1,0,0:0:0:0:
64,192,20500,1,0,0:0:0:0:
64,192,20750,1,0,0:0:0:0:
64,192,21000,1,0,0:0:0:0:
// simultaneous holds
64,192,22000,128,0,23000:0:0:0:0:
192,192,22000,128,0,23000:0:0:0:0:
320,192,22000,128,0,23000:0:0:0:0:
448,192,22000,128,0,23000:0:0:0:0:
// hold stairs
64,192,24500,128,0,25500:0:0:0:0:
192,192,24625,128,0,25375:0:0:0:0:
320,192,24750,128,0,25250:0:0:0:0:
448,192,24875,128,0,25125:0:0:0:0:
448,192,25375,128,0,26375:0:0:0:0:
320,192,25500,128,0,26250:0:0:0:0:
192,192,25625,128,0,26125:0:0:0:0:
64,192,25750,128,0,26000:0:0:0:0:
// quads
64,192,26500,1,0,0:0:0:0:
64,192,27500,1,0,0:0:0:0:
192,192,27500,1,0,0:0:0:0:
320,192,27500,1,0,0:0:0:0:
448,192,27500,1,0,0:0:0:0:
64,192,27750,1,0,0:0:0:0:
192,192,27750,1,0,0:0:0:0:
320,192,27750,1,0,0:0:0:0:
448,192,27750,1,0,0:0:0:0:
64,192,28000,1,0,0:0:0:0:
192,192,28000,1,0,0:0:0:0:
320,192,28000,1,0,0:0:0:0:
448,192,28000,1,0,0:0:0:0:
64,192,28250,1,0,0:0:0:0:
192,192,28250,1,0,0:0:0:0:
320,192,28250,1,0,0:0:0:0:
448,192,28250,1,0,0:0:0:0:
64,192,28500,1,0,0:0:0:0:
192,192,28500,1,0,0:0:0:0:
320,192,28500,1,0,0:0:0:0:
448,192,28500,1,0,0:0:0:0:
// double-trills
64,192,29500,1,0,0:0:0:0:
192,192,29500,1,0,0:0:0:0:
320,192,29625,1,0,0:0:0:0:
448,192,29625,1,0,0:0:0:0:
64,192,29750,1,0,0:0:0:0:
192,192,29750,1,0,0:0:0:0:
320,192,29875,1,0,0:0:0:0:
448,192,29875,1,0,0:0:0:0:
64,192,30000,1,0,0:0:0:0:
192,192,30000,1,0,0:0:0:0:
320,192,30125,1,0,0:0:0:0:
448,192,30125,1,0,0:0:0:0:
64,192,30250,1,0,0:0:0:0:
192,192,30250,1,0,0:0:0:0:
320,192,30375,1,0,0:0:0:0:
448,192,30375,1,0,0:0:0:0:
64,192,30500,1,0,0:0:0:0:
192,192,30500,1,0,0:0:0:0:

View File

@ -0,0 +1,25 @@
// 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.Rulesets.Difficulty;
using osu.Game.Rulesets.Osu.Difficulty;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Rulesets.Osu.Tests
{
[TestFixture]
public class OsuDifficultyCalculatorTest : DifficultyCalculatorTest
{
protected override string ResourceAssembly => "osu.Game.Rulesets.Osu";
[TestCase(6.931145117263422, "diffcalc-test")]
public void Test(double expected, string name)
=> base.Test(expected, name);
protected override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new OsuDifficultyCalculator(new OsuRuleset(), beatmap);
protected override Ruleset CreateRuleset() => new OsuRuleset();
}
}

View File

@ -0,0 +1,179 @@
osu file format v14
[General]
StackLeniency: 0.3
Mode: 0
[Difficulty]
CircleSize:4
OverallDifficulty:7
ApproachRate:8.3
SliderMultiplier:1.6
SliderTickRate:1
[TimingPoints]
500,500,4,2,1,50,1,0
62500,-500,4,2,1,50,0,0
71000,-100,4,2,1,50,0,0
[HitObjects]
// Circles spaced 1 beat apart, with increasing jump distance
126,112,500,5,0,0:0:0:0:
130,155,1000,1,0,0:0:0:0:
131,269,1500,1,0,0:0:0:0:
341,269,2000,1,0,0:0:0:0:
113,95,2500,1,0,0:0:0:0:
// Circles spaced 1/2 beat apart, with increasing jump distance
108,104,3500,5,0,0:0:0:0:
110,145,3750,1,0,0:0:0:0:
115,262,4000,1,0,0:0:0:0:
285,265,4250,1,0,0:0:0:0:
458,48,4500,1,0,0:0:0:0:
35,199,4750,1,0,0:0:0:0:
251,340,5000,1,0,0:0:0:0:
20,352,5250,1,0,0:0:0:0:
426,62,5500,1,0,0:0:0:0:
// Circles spaced 1/4 beat apart, with increasing jump distances
211,138,6500,5,0,0:0:0:0:
99,256,6625,1,0,0:0:0:0:
68,129,6750,1,0,0:0:0:0:
371,340,6875,1,0,0:0:0:0:
241,219,7000,1,0,0:0:0:0:
252,148,7125,1,0,0:0:0:0:
434,97,7250,1,0,0:0:0:0:
40,38,7375,1,0,0:0:0:0:
114,334,7500,1,0,0:0:0:0:
301,19,7625,1,0,0:0:0:0:
441,241,7750,1,0,0:0:0:0:
121,91,7875,1,0,0:0:0:0:
270,384,8000,1,0,0:0:0:0:
488,92,8125,1,0,0:0:0:0:
332,82,8250,1,0,0:0:0:0:
108,240,8375,1,0,0:0:0:0:
281,268,8500,1,0,0:0:0:0:
// Constant spaced circles spaced 1/2 beat apart, small jump distances, changing angles
252,191,9500,5,0,0:0:0:0:
356,191,9750,1,0,0:0:0:0:
311,268,10000,1,0,0:0:0:0:
190,270,10250,1,0,0:0:0:0:
107,199,10500,1,0,0:0:0:0:
172,105,10750,1,0,0:0:0:0:
297,102,11000,1,0,0:0:0:0:
373,178,11250,1,0,0:0:0:0:
252,195,11500,1,0,0:0:0:0:
// Constant spaced circles spaced 1/2 beat apart, large jump distances, changing angles
140,187,12500,5,0,0:0:0:0:
451,331,12750,1,0,0:0:0:0:
46,338,13000,1,0,0:0:0:0:
204,50,13250,1,0,0:0:0:0:
464,162,13500,1,0,0:0:0:0:
252,346,13750,1,0,0:0:0:0:
13,175,14000,1,0,0:0:0:0:
488,181,14250,1,0,0:0:0:0:
251,187,14500,1,0,0:0:0:0:
// Constant spaced circles spaced 1/4 beat apart, small jump distances, changing angles
188,192,15500,5,0,0:0:0:0:
298,194,15625,1,0,0:0:0:0:
317,84,15750,1,0,0:0:0:0:
185,85,15875,1,0,0:0:0:0:
77,200,16000,1,0,0:0:0:0:
184,303,16125,1,0,0:0:0:0:
295,225,16250,1,0,0:0:0:0:
300,84,16375,1,0,0:0:0:0:
144,82,16500,1,0,0:0:0:0:
141,215,16625,1,0,0:0:0:0:
314,184,16750,1,0,0:0:0:0:
188,192,16875,1,0,0:0:0:0:
188,192,17000,1,0,0:0:0:0:
// Constant spaced circles spaced 1/4 beat apart, large jump distances, changing angles
97,192,18000,5,0,0:0:0:0:
336,38,18125,1,0,0:0:0:0:
440,322,18250,1,0,0:0:0:0:
39,331,18375,1,0,0:0:0:0:
98,39,18500,1,0,0:0:0:0:
460,179,18625,1,0,0:0:0:0:
245,338,18750,1,0,0:0:0:0:
12,184,18875,1,0,0:0:0:0:
250,41,19000,1,0,0:0:0:0:
265,193,19125,1,0,0:0:0:0:
486,22,19250,1,0,0:0:0:0:
411,205,19375,1,0,0:0:0:0:
107,198,19500,1,0,0:0:0:0:
// Short sliders spaced 1 beat apart
28,108,20500,2,0,L|196:107,1,160
25,177,21500,2,0,L|193:176,1,160
26,308,22500,2,0,L|194:307,1,160
320,89,23500,2,0,L|488:88,1,160
// Short sliders spaced 1/2 beat apart
28,108,25000,6,0,L|196:107,1,160
27,173,25750,2,0,L|195:172,1,160
25,292,26500,2,0,L|193:291,1,160
340,213,27250,2,0,L|508:212,1,160
21,44,28000,2,0,L|189:43,1,160
// Short sliders spaced 1/4 beat apart
28,108,29500,6,0,L|196:107,1,160
30,169,30125,2,0,L|198:168,1,160
35,282,30750,2,0,L|203:281,1,160
327,286,31375,2,0,L|495:285,1,160
51,61,32000,2,0,L|219:60,1,160
// Large, medium-paced slider shapes
// PerfectCurve
66,86,33500,6,0,P|246:348|427:44,1,800
66,86,36500,2,0,P|246:348|427:44,1,800
66,86,39500,2,0,P|246:348|427:44,1,800
// Linear
66,72,42500,2,0,B|419:65|419:65|66:316|66:316|426:318,1,1120
66,72,46500,2,0,B|419:65|419:65|66:316|66:316|426:318,1,1120
66,72,50500,2,0,B|419:65|419:65|66:316|66:316|426:318,1,1120
// Bezier
76,287,54500,2,0,B|440:325|138:128|470:302|500:30|130:85|66:82,1,640
76,287,57000,2,0,B|440:325|138:128|470:302|500:30|130:85|66:82,1,640
76,287,59500,2,0,B|440:325|138:128|470:302|500:30|130:85|66:82,1,640
// Large slow slider with many ticks
81,170,62500,6,0,P|263:78|168:268,1,480
// Fast slider with many repeats
102,152,71000,6,0,L|175:153,18,64
// Slider-circle combos, spaced 1/2 beat apart
106,204,75500,6,0,P|275:33|171:304,1,800
255,179,78250,1,0,0:0:0:0:
106,204,78500,2,0,P|275:33|171:304,1,800
255,179,81250,1,0,0:0:0:0:
106,204,81500,2,0,P|275:33|171:304,1,800
// Circle-spinner combos, spaced 1/2 beat apart
82,69,85000,5,0,0:0:0:0:
256,192,85250,8,0,86000,0:0:0:0:
384,189,86250,5,0,0:0:0:0:
256,192,86500,12,0,87000,0:0:0:0:
// Spinner-spinner combos, spaced 1/2 beat apart
256,192,88000,12,0,89000,0:0:0:0:
256,192,89250,12,0,90250,0:0:0:0:
256,192,90500,12,0,91500,0:0:0:0:
256,192,91750,12,0,92750,0:0:0:0:
256,192,93000,12,0,94000,0:0:0:0:
// Slider-spinner combos, spaced 1/2 beat apart
49,89,95000,6,0,L|214:87,1,160
256,192,95625,12,0,96500,0:0:0:0:
12,299,96625,6,0,L|177:297,1,160
256,192,97250,12,0,98125,0:0:0:0:
295,107,98250,6,0,L|460:105,1,160
256,192,98875,12,0,99750,0:0:0:0:
279,325,99875,6,0,L|444:323,1,160
256,192,100500,12,0,101375,0:0:0:0:
197,197,101500,6,0,L|362:195,1,160
256,192,102125,12,0,103000,0:0:0:0:

View File

@ -0,0 +1,25 @@
// 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.Rulesets.Difficulty;
using osu.Game.Rulesets.Taiko.Difficulty;
using osu.Game.Tests.Beatmaps;
namespace osu.Game.Rulesets.Taiko.Tests
{
public class TaikoDifficultyCalculatorTest : DifficultyCalculatorTest
{
protected override string ResourceAssembly => "osu.Game.Rulesets.Taiko";
[TestCase(2.9811336589467095, "diffcalc-test")]
[TestCase(2.9811336589467095, "diffcalc-test-strong")]
public void Test(double expected, string name)
=> base.Test(expected, name);
protected override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new TaikoDifficultyCalculator(new TaikoRuleset(), beatmap);
protected override Ruleset CreateRuleset() => new TaikoRuleset();
}
}

View File

@ -0,0 +1,257 @@
osu file format v14
[General]
Mode: 1
[Difficulty]
CircleSize:4
OverallDifficulty:7
ApproachRate:8.3
SliderMultiplier:1.6
SliderTickRate:1
[TimingPoints]
500,500,4,2,1,50,1,0
62500,-500,4,2,1,50,0,0
71000,-100,4,2,1,50,0,0
[HitObjects]
// Same as diffcalc-test with finishers on every note
142,122,0,5,4,0:0:0:0:
142,122,125,1,4,0:0:0:0:
142,122,250,1,4,0:0:0:0:
142,122,375,1,4,0:0:0:0:
142,122,500,1,4,0:0:0:0:
142,122,625,1,4,0:0:0:0:
142,122,750,1,4,0:0:0:0:
142,122,875,1,4,0:0:0:0:
142,122,1000,1,4,0:0:0:0:
142,122,1125,1,4,0:0:0:0:
142,122,1250,1,4,0:0:0:0:
142,122,1375,1,4,0:0:0:0:
142,122,1500,1,4,0:0:0:0:
119,106,2500,1,6,0:0:0:0:
119,106,2625,1,6,0:0:0:0:
119,106,2750,1,6,0:0:0:0:
119,106,2875,1,6,0:0:0:0:
119,106,3000,1,6,0:0:0:0:
119,106,3125,1,6,0:0:0:0:
119,106,3250,1,6,0:0:0:0:
119,106,3375,1,6,0:0:0:0:
119,106,3500,1,6,0:0:0:0:
119,106,3625,1,6,0:0:0:0:
119,106,3750,1,6,0:0:0:0:
119,106,3875,1,6,0:0:0:0:
119,106,4000,1,6,0:0:0:0:
136,90,5000,1,4,0:0:0:0:
136,90,5125,1,6,0:0:0:0:
136,90,5250,1,4,0:0:0:0:
136,90,5375,1,6,0:0:0:0:
136,90,5500,1,4,0:0:0:0:
136,90,5625,1,6,0:0:0:0:
136,90,5750,1,4,0:0:0:0:
136,90,5875,1,6,0:0:0:0:
136,90,6000,1,4,0:0:0:0:
136,90,6125,1,6,0:0:0:0:
136,90,6250,1,4,0:0:0:0:
136,90,6375,1,6,0:0:0:0:
136,90,6500,1,4,0:0:0:0:
86,113,7500,1,4,0:0:0:0:
86,113,7625,1,4,0:0:0:0:
86,113,7750,1,6,0:0:0:0:
86,113,7875,1,6,0:0:0:0:
86,113,8000,1,4,0:0:0:0:
86,113,8125,1,4,0:0:0:0:
86,113,8250,1,6,0:0:0:0:
86,113,8375,1,6,0:0:0:0:
86,113,8500,1,4,0:0:0:0:
86,113,8625,1,4,0:0:0:0:
86,113,8750,1,6,0:0:0:0:
86,113,8875,1,6,0:0:0:0:
86,113,9000,1,4,0:0:0:0:
146,90,10000,1,4,0:0:0:0:
146,90,10125,1,4,0:0:0:0:
146,90,10250,1,4,0:0:0:0:
146,90,10375,1,6,0:0:0:0:
146,90,10500,1,6,0:0:0:0:
146,90,10625,1,6,0:0:0:0:
146,90,10750,1,4,0:0:0:0:
146,90,10875,1,4,0:0:0:0:
146,90,11000,1,4,0:0:0:0:
146,90,11125,1,6,0:0:0:0:
146,90,11250,1,6,0:0:0:0:
146,90,11375,1,6,0:0:0:0:
146,90,11500,1,4,0:0:0:0:
146,90,11625,1,4,0:0:0:0:
146,90,11750,1,4,0:0:0:0:
146,90,11875,1,6,0:0:0:0:
146,90,12000,1,6,0:0:0:0:
146,90,12125,1,6,0:0:0:0:
146,90,12250,1,4,0:0:0:0:
146,90,12375,1,4,0:0:0:0:
146,90,12500,1,4,0:0:0:0:
69,99,13500,1,4,0:0:0:0:
69,99,13625,1,4,0:0:0:0:
69,99,13750,1,4,0:0:0:0:
69,99,13875,1,6,0:0:0:0:
69,99,14000,1,4,0:0:0:0:
69,99,14125,1,4,0:0:0:0:
69,99,14250,1,4,0:0:0:0:
69,99,14375,1,6,0:0:0:0:
69,99,14500,1,4,0:0:0:0:
69,99,14625,1,4,0:0:0:0:
69,99,14750,1,4,0:0:0:0:
69,99,14875,1,6,0:0:0:0:
69,99,15000,1,4,0:0:0:0:
69,99,15125,1,4,0:0:0:0:
69,99,15250,1,4,0:0:0:0:
69,99,15375,1,6,0:0:0:0:
69,99,15500,1,4,0:0:0:0:
83,89,16500,1,4,0:0:0:0:
83,89,16625,1,6,0:0:0:0:
83,89,16750,1,6,0:0:0:0:
83,89,16875,1,4,0:0:0:0:
83,89,17000,1,4,0:0:0:0:
83,89,17125,1,4,0:0:0:0:
83,89,17250,1,6,0:0:0:0:
83,89,17375,1,6,0:0:0:0:
83,89,17500,1,6,0:0:0:0:
83,89,17625,1,6,0:0:0:0:
83,89,17750,1,4,0:0:0:0:
83,89,17875,1,4,0:0:0:0:
83,89,18000,1,4,0:0:0:0:
83,89,18125,1,4,0:0:0:0:
83,89,18250,1,4,0:0:0:0:
83,89,18375,1,6,0:0:0:0:
83,89,18500,1,6,0:0:0:0:
83,89,18625,1,6,0:0:0:0:
83,89,18750,1,6,0:0:0:0:
83,89,18875,1,4,0:0:0:0:
83,89,19000,1,4,0:0:0:0:
83,89,19125,1,4,0:0:0:0:
83,89,19250,1,4,0:0:0:0:
83,89,19375,1,6,0:0:0:0:
83,89,19500,1,6,0:0:0:0:
83,89,19625,1,4,0:0:0:0:
84,122,20500,1,4,0:0:0:0:
84,122,20625,2,4,L|217:123,1,120
84,122,21125,1,4,0:0:0:0:
84,122,21250,2,4,L|217:123,1,120
84,122,21750,1,4,0:0:0:0:
84,122,21875,2,4,L|217:123,1,120
84,122,22375,1,4,0:0:0:0:
84,122,22500,2,4,L|217:123,1,120
84,122,23000,1,4,0:0:0:0:
84,122,23125,2,4,L|217:123,1,120
99,106,24500,1,4,0:0:0:0:
99,106,24625,1,4,0:0:0:0:
99,106,24750,2,4,L|194:107,1,80
99,106,25125,1,4,0:0:0:0:
99,106,25250,1,4,0:0:0:0:
99,106,25375,2,4,L|194:107,1,80
99,106,25750,1,4,0:0:0:0:
99,106,25875,1,4,0:0:0:0:
99,106,26000,2,4,L|194:107,1,80
99,106,26375,1,4,0:0:0:0:
99,106,26500,1,4,0:0:0:0:
99,106,26625,2,4,L|194:107,1,80
99,106,27000,1,4,0:0:0:0:
99,106,27125,1,4,0:0:0:0:
99,106,27250,2,4,L|194:107,1,80
121,103,28500,1,4,0:0:0:0:
121,103,28625,1,4,0:0:0:0:
121,103,28750,1,4,0:0:0:0:
121,103,28875,2,4,L|190:103,1,40
121,103,29125,1,4,0:0:0:0:
121,103,29250,1,4,0:0:0:0:
121,103,29375,1,4,0:0:0:0:
121,103,29500,2,4,L|190:103,1,40
121,103,29750,1,4,0:0:0:0:
121,103,29875,1,4,0:0:0:0:
121,103,30000,1,4,0:0:0:0:
121,103,30125,2,4,L|190:103,1,40
121,103,30375,1,4,0:0:0:0:
121,103,30500,1,4,0:0:0:0:
121,103,30625,1,4,0:0:0:0:
121,103,30750,2,4,L|190:103,1,40
121,103,31000,1,4,0:0:0:0:
121,103,31125,1,4,0:0:0:0:
121,103,31250,1,4,0:0:0:0:
121,103,31375,2,4,L|190:103,1,40
121,103,32500,1,4,0:0:0:0:
121,103,32625,1,6,0:0:0:0:
121,103,32750,1,4,0:0:0:0:
121,103,32875,2,4,L|190:103,1,40
121,103,33125,1,4,0:0:0:0:
121,103,33250,1,6,0:0:0:0:
121,103,33375,1,4,0:0:0:0:
121,103,33500,2,4,L|190:103,1,40
121,103,33750,1,4,0:0:0:0:
121,103,33875,1,6,0:0:0:0:
121,103,34000,1,4,0:0:0:0:
121,103,34125,2,4,L|190:103,1,40
121,103,34375,1,4,0:0:0:0:
121,103,34500,1,6,0:0:0:0:
121,103,34625,1,4,0:0:0:0:
121,103,34750,2,4,L|190:103,1,40
121,103,35000,1,4,0:0:0:0:
121,103,35125,1,6,0:0:0:0:
121,103,35250,1,4,0:0:0:0:
121,103,35375,2,4,L|190:103,1,40
121,103,36500,1,4,0:0:0:0:
121,103,36625,1,4,0:0:0:0:
121,103,36750,1,6,0:0:0:0:
121,103,36875,2,4,L|190:103,1,40
121,103,37125,1,4,0:0:0:0:
121,103,37250,1,4,0:0:0:0:
121,103,37375,1,6,0:0:0:0:
121,103,37500,2,4,L|190:103,1,40
121,103,37750,1,4,0:0:0:0:
121,103,37875,1,4,0:0:0:0:
121,103,38000,1,6,0:0:0:0:
121,103,38125,2,4,L|190:103,1,40
121,103,38375,1,4,0:0:0:0:
121,103,38500,1,4,0:0:0:0:
121,103,38625,1,6,0:0:0:0:
121,103,38750,2,4,L|190:103,1,40
121,103,39000,1,4,0:0:0:0:
121,103,39125,1,4,0:0:0:0:
121,103,39250,1,6,0:0:0:0:
121,103,39375,2,4,L|190:103,1,40
107,106,40500,1,4,0:0:0:0:
107,106,40625,1,4,0:0:0:0:
107,106,40750,1,6,0:0:0:0:
107,106,40875,1,6,0:0:0:0:
46,112,41000,2,4,L|214:112,1,160
107,106,41625,1,4,0:0:0:0:
107,106,41750,1,4,0:0:0:0:
107,106,41875,1,6,0:0:0:0:
107,106,42000,1,6,0:0:0:0:
46,112,42125,2,4,L|214:112,1,160
107,106,42750,1,4,0:0:0:0:
107,106,42875,1,4,0:0:0:0:
107,106,43000,1,6,0:0:0:0:
107,106,43125,1,6,0:0:0:0:
46,112,43250,2,4,L|214:112,1,160
107,106,43875,1,4,0:0:0:0:
107,106,44000,1,4,0:0:0:0:
107,106,44125,1,6,0:0:0:0:
107,106,44250,1,6,0:0:0:0:
46,112,44375,2,4,L|214:112,1,160
107,106,45000,1,4,0:0:0:0:
107,106,45125,1,4,0:0:0:0:
107,106,45250,1,6,0:0:0:0:
107,106,45375,1,6,0:0:0:0:
46,112,45500,2,4,L|214:112,1,160
256,192,47000,12,4,47500,0:0:0:0:
256,192,47625,12,4,48000,0:0:0:0:
256,192,48125,12,4,48500,0:0:0:0:
256,192,48625,12,4,49000,0:0:0:0:
256,192,50000,12,4,50500,0:0:0:0:
183,143,50625,5,4,0:0:0:0:
256,192,50750,12,4,51250,0:0:0:0:
114,106,51375,5,4,0:0:0:0:
256,192,51625,12,4,52125,0:0:0:0:
154,143,52250,5,4,0:0:0:0:
256,192,52375,12,4,52875,0:0:0:0:
116,111,53000,5,4,0:0:0:0:

View File

@ -0,0 +1,285 @@
osu file format v14
[General]
Mode: 1
[Difficulty]
CircleSize:4
OverallDifficulty:7
ApproachRate:8.3
SliderMultiplier:1.6
SliderTickRate:1
[TimingPoints]
500,500,4,2,1,50,1,0
62500,-500,4,2,1,50,0,0
71000,-100,4,2,1,50,0,0
[HitObjects]
// dd, spaced 1/4 beat apart
142,122,0,5,0,0:0:0:0:
142,122,125,1,0,0:0:0:0:
142,122,250,1,0,0:0:0:0:
142,122,375,1,0,0:0:0:0:
142,122,500,1,0,0:0:0:0:
142,122,625,1,0,0:0:0:0:
142,122,750,1,0,0:0:0:0:
142,122,875,1,0,0:0:0:0:
142,122,1000,1,0,0:0:0:0:
142,122,1125,1,0,0:0:0:0:
142,122,1250,1,0,0:0:0:0:
142,122,1375,1,0,0:0:0:0:
142,122,1500,1,0,0:0:0:0:
// kk, spaced 1/4 beat apart
119,106,2500,1,2,0:0:0:0:
119,106,2625,1,2,0:0:0:0:
119,106,2750,1,2,0:0:0:0:
119,106,2875,1,2,0:0:0:0:
119,106,3000,1,2,0:0:0:0:
119,106,3125,1,2,0:0:0:0:
119,106,3250,1,2,0:0:0:0:
119,106,3375,1,2,0:0:0:0:
119,106,3500,1,2,0:0:0:0:
119,106,3625,1,2,0:0:0:0:
119,106,3750,1,2,0:0:0:0:
119,106,3875,1,2,0:0:0:0:
119,106,4000,1,2,0:0:0:0:
// dk, spaced 1/4 beat apart
136,90,5000,1,0,0:0:0:0:
136,90,5125,1,2,0:0:0:0:
136,90,5250,1,0,0:0:0:0:
136,90,5375,1,2,0:0:0:0:
136,90,5500,1,0,0:0:0:0:
136,90,5625,1,2,0:0:0:0:
136,90,5750,1,0,0:0:0:0:
136,90,5875,1,2,0:0:0:0:
136,90,6000,1,0,0:0:0:0:
136,90,6125,1,2,0:0:0:0:
136,90,6250,1,0,0:0:0:0:
136,90,6375,1,2,0:0:0:0:
136,90,6500,1,0,0:0:0:0:
// ddkk, spaced 1/4 beat apart
86,113,7500,1,0,0:0:0:0:
86,113,7625,1,0,0:0:0:0:
86,113,7750,1,2,0:0:0:0:
86,113,7875,1,2,0:0:0:0:
86,113,8000,1,0,0:0:0:0:
86,113,8125,1,0,0:0:0:0:
86,113,8250,1,2,0:0:0:0:
86,113,8375,1,2,0:0:0:0:
86,113,8500,1,0,0:0:0:0:
86,113,8625,1,0,0:0:0:0:
86,113,8750,1,2,0:0:0:0:
86,113,8875,1,2,0:0:0:0:
86,113,9000,1,0,0:0:0:0:
// dddkkk, spaced 1/4 beat apart
146,90,10000,1,0,0:0:0:0:
146,90,10125,1,0,0:0:0:0:
146,90,10250,1,0,0:0:0:0:
146,90,10375,1,2,0:0:0:0:
146,90,10500,1,2,0:0:0:0:
146,90,10625,1,2,0:0:0:0:
146,90,10750,1,0,0:0:0:0:
146,90,10875,1,0,0:0:0:0:
146,90,11000,1,0,0:0:0:0:
146,90,11125,1,2,0:0:0:0:
146,90,11250,1,2,0:0:0:0:
146,90,11375,1,2,0:0:0:0:
146,90,11500,1,0,0:0:0:0:
146,90,11625,1,0,0:0:0:0:
146,90,11750,1,0,0:0:0:0:
146,90,11875,1,2,0:0:0:0:
146,90,12000,1,2,0:0:0:0:
146,90,12125,1,2,0:0:0:0:
146,90,12250,1,0,0:0:0:0:
146,90,12375,1,0,0:0:0:0:
146,90,12500,1,0,0:0:0:0:
// dddk, spaced 1/4 beat apart
69,99,13500,1,0,0:0:0:0:
69,99,13625,1,0,0:0:0:0:
69,99,13750,1,0,0:0:0:0:
69,99,13875,1,2,0:0:0:0:
69,99,14000,1,0,0:0:0:0:
69,99,14125,1,0,0:0:0:0:
69,99,14250,1,0,0:0:0:0:
69,99,14375,1,2,0:0:0:0:
69,99,14500,1,0,0:0:0:0:
69,99,14625,1,0,0:0:0:0:
69,99,14750,1,0,0:0:0:0:
69,99,14875,1,2,0:0:0:0:
69,99,15000,1,0,0:0:0:0:
69,99,15125,1,0,0:0:0:0:
69,99,15250,1,0,0:0:0:0:
69,99,15375,1,2,0:0:0:0:
69,99,15500,1,0,0:0:0:0:
// arbitrary pattern, spaced 1/4 beat apart
83,89,16500,1,0,0:0:0:0:
83,89,16625,1,2,0:0:0:0:
83,89,16750,1,2,0:0:0:0:
83,89,16875,1,0,0:0:0:0:
83,89,17000,1,0,0:0:0:0:
83,89,17125,1,0,0:0:0:0:
83,89,17250,1,2,0:0:0:0:
83,89,17375,1,2,0:0:0:0:
83,89,17500,1,2,0:0:0:0:
83,89,17625,1,2,0:0:0:0:
83,89,17750,1,0,0:0:0:0:
83,89,17875,1,0,0:0:0:0:
83,89,18000,1,0,0:0:0:0:
83,89,18125,1,0,0:0:0:0:
83,89,18250,1,0,0:0:0:0:
83,89,18375,1,2,0:0:0:0:
83,89,18500,1,2,0:0:0:0:
83,89,18625,1,2,0:0:0:0:
83,89,18750,1,2,0:0:0:0:
83,89,18875,1,0,0:0:0:0:
83,89,19000,1,0,0:0:0:0:
83,89,19125,1,0,0:0:0:0:
83,89,19250,1,0,0:0:0:0:
83,89,19375,1,2,0:0:0:0:
83,89,19500,1,2,0:0:0:0:
83,89,19625,1,0,0:0:0:0:
// d-slider pattern, spaced 1/4 beat apart
84,122,20500,1,0,0:0:0:0:
84,122,20625,2,0,L|217:123,1,120
84,122,21125,1,0,0:0:0:0:
84,122,21250,2,0,L|217:123,1,120
84,122,21750,1,0,0:0:0:0:
84,122,21875,2,0,L|217:123,1,120
84,122,22375,1,0,0:0:0:0:
84,122,22500,2,0,L|217:123,1,120
84,122,23000,1,0,0:0:0:0:
84,122,23125,2,0,L|217:123,1,120
// dd-slider pattern, spaced 1/4 beat apart
99,106,24500,1,0,0:0:0:0:
99,106,24625,1,0,0:0:0:0:
99,106,24750,2,0,L|194:107,1,80
99,106,25125,1,0,0:0:0:0:
99,106,25250,1,0,0:0:0:0:
99,106,25375,2,0,L|194:107,1,80
99,106,25750,1,0,0:0:0:0:
99,106,25875,1,0,0:0:0:0:
99,106,26000,2,0,L|194:107,1,80
99,106,26375,1,0,0:0:0:0:
99,106,26500,1,0,0:0:0:0:
99,106,26625,2,0,L|194:107,1,80
99,106,27000,1,0,0:0:0:0:
99,106,27125,1,0,0:0:0:0:
99,106,27250,2,0,L|194:107,1,80
// ddd-slider pattern, spaced 1/4 beat apart
121,103,28500,1,0,0:0:0:0:
121,103,28625,1,0,0:0:0:0:
121,103,28750,1,0,0:0:0:0:
121,103,28875,2,0,L|190:103,1,40
121,103,29125,1,0,0:0:0:0:
121,103,29250,1,0,0:0:0:0:
121,103,29375,1,0,0:0:0:0:
121,103,29500,2,0,L|190:103,1,40
121,103,29750,1,0,0:0:0:0:
121,103,29875,1,0,0:0:0:0:
121,103,30000,1,0,0:0:0:0:
121,103,30125,2,0,L|190:103,1,40
121,103,30375,1,0,0:0:0:0:
121,103,30500,1,0,0:0:0:0:
121,103,30625,1,0,0:0:0:0:
121,103,30750,2,0,L|190:103,1,40
121,103,31000,1,0,0:0:0:0:
121,103,31125,1,0,0:0:0:0:
121,103,31250,1,0,0:0:0:0:
121,103,31375,2,0,L|190:103,1,40
// dkd-slider pattern, spaced 1/4 beat apart
121,103,32500,1,0,0:0:0:0:
121,103,32625,1,2,0:0:0:0:
121,103,32750,1,0,0:0:0:0:
121,103,32875,2,0,L|190:103,1,40
121,103,33125,1,0,0:0:0:0:
121,103,33250,1,2,0:0:0:0:
121,103,33375,1,0,0:0:0:0:
121,103,33500,2,0,L|190:103,1,40
121,103,33750,1,0,0:0:0:0:
121,103,33875,1,2,0:0:0:0:
121,103,34000,1,0,0:0:0:0:
121,103,34125,2,0,L|190:103,1,40
121,103,34375,1,0,0:0:0:0:
121,103,34500,1,2,0:0:0:0:
121,103,34625,1,0,0:0:0:0:
121,103,34750,2,0,L|190:103,1,40
121,103,35000,1,0,0:0:0:0:
121,103,35125,1,2,0:0:0:0:
121,103,35250,1,0,0:0:0:0:
121,103,35375,2,0,L|190:103,1,40
//ddk-slider pattern, spaced 1/4 beat apart
121,103,36500,1,0,0:0:0:0:
121,103,36625,1,0,0:0:0:0:
121,103,36750,1,2,0:0:0:0:
121,103,36875,2,0,L|190:103,1,40
121,103,37125,1,0,0:0:0:0:
121,103,37250,1,0,0:0:0:0:
121,103,37375,1,2,0:0:0:0:
121,103,37500,2,0,L|190:103,1,40
121,103,37750,1,0,0:0:0:0:
121,103,37875,1,0,0:0:0:0:
121,103,38000,1,2,0:0:0:0:
121,103,38125,2,0,L|190:103,1,40
121,103,38375,1,0,0:0:0:0:
121,103,38500,1,0,0:0:0:0:
121,103,38625,1,2,0:0:0:0:
121,103,38750,2,0,L|190:103,1,40
121,103,39000,1,0,0:0:0:0:
121,103,39125,1,0,0:0:0:0:
121,103,39250,1,2,0:0:0:0:
121,103,39375,2,0,L|190:103,1,40
//ddkk-slider pattern, spaced 1/4 beat apart
107,106,40500,1,0,0:0:0:0:
107,106,40625,1,0,0:0:0:0:
107,106,40750,1,2,0:0:0:0:
107,106,40875,1,2,0:0:0:0:
46,112,41000,2,0,L|214:112,1,160
107,106,41625,1,0,0:0:0:0:
107,106,41750,1,0,0:0:0:0:
107,106,41875,1,2,0:0:0:0:
107,106,42000,1,2,0:0:0:0:
46,112,42125,2,0,L|214:112,1,160
107,106,42750,1,0,0:0:0:0:
107,106,42875,1,0,0:0:0:0:
107,106,43000,1,2,0:0:0:0:
107,106,43125,1,2,0:0:0:0:
46,112,43250,2,0,L|214:112,1,160
107,106,43875,1,0,0:0:0:0:
107,106,44000,1,0,0:0:0:0:
107,106,44125,1,2,0:0:0:0:
107,106,44250,1,2,0:0:0:0:
46,112,44375,2,0,L|214:112,1,160
107,106,45000,1,0,0:0:0:0:
107,106,45125,1,0,0:0:0:0:
107,106,45250,1,2,0:0:0:0:
107,106,45375,1,2,0:0:0:0:
46,112,45500,2,0,L|214:112,1,160
// spinner-spinner pattern, spaced 1/4 beat apart
256,192,47000,12,0,47500,0:0:0:0:
256,192,47625,12,0,48000,0:0:0:0:
256,192,48125,12,0,48500,0:0:0:0:
256,192,48625,12,0,49000,0:0:0:0:
// spinner-d pattern, spaced 1/4 beat apart
256,192,50000,12,0,50500,0:0:0:0:
183,143,50625,5,0,0:0:0:0:
256,192,50750,12,0,51250,0:0:0:0:
114,106,51375,5,0,0:0:0:0:
256,192,51625,12,0,52125,0:0:0:0:
154,143,52250,5,0,0:0:0:0:
256,192,52375,12,0,52875,0:0:0:0:
116,111,53000,5,0,0:0:0:0:

View File

@ -0,0 +1,51 @@
// 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 System;
using System.IO;
using System.Reflection;
using NUnit.Framework;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.Formats;
using osu.Game.Rulesets;
using osu.Game.Rulesets.Difficulty;
using osu.Game.Rulesets.Mods;
namespace osu.Game.Tests.Beatmaps
{
[TestFixture]
public abstract class DifficultyCalculatorTest
{
private const string resource_namespace = "Testing.Beatmaps";
protected abstract string ResourceAssembly { get; }
protected void Test(double expected, string name, params Mod[] mods)
=> Assert.AreEqual(expected, CreateDifficultyCalculator(getBeatmap(name)).Calculate(mods).StarRating);
private WorkingBeatmap getBeatmap(string name)
{
using (var resStream = openResource($"{resource_namespace}.{name}.osu"))
using (var stream = new StreamReader(resStream))
{
var decoder = Decoder.GetDecoder<Beatmap>(stream);
((LegacyBeatmapDecoder)decoder).ApplyOffsets = false;
var working = new TestWorkingBeatmap(decoder.Decode(stream));
working.BeatmapInfo.Ruleset = CreateRuleset().RulesetInfo;
return working;
}
}
private Stream openResource(string name)
{
var localPath = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
return Assembly.LoadFrom(Path.Combine(localPath, $"{ResourceAssembly}.dll")).GetManifestResourceStream($@"{ResourceAssembly}.Resources.{name}");
}
protected abstract DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap);
protected abstract Ruleset CreateRuleset();
}
}