Add osu! autoplay generation.

Doesn't work on complex sliders yet.
This commit is contained in:
Dean Herbert
2017-03-05 17:46:00 +09:00
parent 7afcac3660
commit 1c5b918f9e
8 changed files with 349 additions and 14 deletions

View File

@ -69,15 +69,18 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
Size = circle.DrawSize;
}
double hit50 = 150;
double hit100 = 80;
double hit300 = 30;
//todo: these aren't constants.
public const double HITTABLE_RANGE = 300;
public const double HIT_WINDOW_50 = 150;
public const double HIT_WINDOW_100 = 80;
public const double HIT_WINDOW_300 = 30;
public const double CIRCLE_RADIUS = 64;
protected override void CheckJudgement(bool userTriggered)
{
if (!userTriggered)
{
if (Judgement.TimeOffset > hit50)
if (Judgement.TimeOffset > HIT_WINDOW_50)
Judgement.Result = HitResult.Miss;
return;
}
@ -86,15 +89,15 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
OsuJudgementInfo osuJudgement = Judgement as OsuJudgementInfo;
if (hitOffset < hit50)
if (hitOffset < HIT_WINDOW_50)
{
Judgement.Result = HitResult.Hit;
if (hitOffset < hit300)
if (hitOffset < HIT_WINDOW_300)
osuJudgement.Score = OsuScoreResult.Hit300;
else if (hitOffset < hit100)
else if (hitOffset < HIT_WINDOW_100)
osuJudgement.Score = OsuScoreResult.Hit100;
else if (hitOffset < hit50)
else if (hitOffset < HIT_WINDOW_50)
osuJudgement.Score = OsuScoreResult.Hit50;
}
else