1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-13 07:43:00 +08:00

Fix imported replays having excess statistics

This commit is contained in:
Dean Herbert 2019-01-03 13:57:56 +09:00
parent 975fc47a2b
commit aec3753863
6 changed files with 25 additions and 17 deletions

View File

@ -43,6 +43,6 @@ namespace osu.Game.Rulesets.Catch.Scoring
Health.Value += Math.Max(result.Judgement.HealthIncreaseFor(result) - hpDrainRate, 0) * harshness;
}
protected override HitWindows CreateHitWindows() => new CatchHitWindows();
public override HitWindows CreateHitWindows() => new CatchHitWindows();
}
}

View File

@ -159,6 +159,6 @@ namespace osu.Game.Rulesets.Mania.Scoring
}
}
protected override HitWindows CreateHitWindows() => new ManiaHitWindows();
public override HitWindows CreateHitWindows() => new ManiaHitWindows();
}
}

View File

@ -74,6 +74,6 @@ namespace osu.Game.Rulesets.Osu.Scoring
protected override JudgementResult CreateResult(Judgement judgement) => new OsuJudgementResult(judgement);
protected override HitWindows CreateHitWindows() => new OsuHitWindows();
public override HitWindows CreateHitWindows() => new OsuHitWindows();
}
}

View File

@ -67,6 +67,6 @@ namespace osu.Game.Rulesets.Taiko.Scoring
Health.Value = 0;
}
protected override HitWindows CreateHitWindows() => new TaikoHitWindows();
public override HitWindows CreateHitWindows() => new TaikoHitWindows();
}
}

View File

@ -63,7 +63,7 @@ namespace osu.Game.Rulesets.Scoring
/// <summary>
/// Create a <see cref="HitWindows"/> for this processor.
/// </summary>
protected virtual HitWindows CreateHitWindows() => new HitWindows();
public virtual HitWindows CreateHitWindows() => new HitWindows();
/// <summary>
/// The current rank.

View File

@ -57,12 +57,20 @@ namespace osu.Game.Scoring.Legacy
var countKatu = (int)sr.ReadUInt16();
var countMiss = (int)sr.ReadUInt16();
score.ScoreInfo.Statistics[HitResult.Great] = count300;
score.ScoreInfo.Statistics[HitResult.Good] = count100;
score.ScoreInfo.Statistics[HitResult.Meh] = count50;
score.ScoreInfo.Statistics[HitResult.Perfect] = countGeki;
score.ScoreInfo.Statistics[HitResult.Ok] = countKatu;
score.ScoreInfo.Statistics[HitResult.Miss] = countMiss;
var windows = currentRuleset.CreateRulesetContainerWith(workingBeatmap).CreateScoreProcessor().CreateHitWindows();
if (windows.IsHitResultAllowed(HitResult.Great))
score.ScoreInfo.Statistics[HitResult.Great] = count300;
if (windows.IsHitResultAllowed(HitResult.Good))
score.ScoreInfo.Statistics[HitResult.Good] = count100;
if (windows.IsHitResultAllowed(HitResult.Meh))
score.ScoreInfo.Statistics[HitResult.Meh] = count50;
if (windows.IsHitResultAllowed(HitResult.Perfect))
score.ScoreInfo.Statistics[HitResult.Perfect] = countGeki;
if (windows.IsHitResultAllowed(HitResult.Ok))
score.ScoreInfo.Statistics[HitResult.Ok] = countKatu;
if (windows.IsHitResultAllowed(HitResult.Miss))
score.ScoreInfo.Statistics[HitResult.Miss] = countMiss;
score.ScoreInfo.TotalScore = sr.ReadInt32();
score.ScoreInfo.MaxCombo = sr.ReadUInt16();
@ -116,12 +124,12 @@ namespace osu.Game.Scoring.Legacy
private void calculateAccuracy(ScoreInfo score)
{
int countMiss = score.Statistics[HitResult.Miss];
int count50 = score.Statistics[HitResult.Meh];
int count100 = score.Statistics[HitResult.Good];
int count300 = score.Statistics[HitResult.Great];
int countGeki = score.Statistics[HitResult.Perfect];
int countKatu = score.Statistics[HitResult.Ok];
score.Statistics.TryGetValue(HitResult.Miss, out int countMiss);
score.Statistics.TryGetValue(HitResult.Meh, out int count50);
score.Statistics.TryGetValue(HitResult.Good, out int count100);
score.Statistics.TryGetValue(HitResult.Great, out int count300);
score.Statistics.TryGetValue(HitResult.Perfect, out int countGeki);
score.Statistics.TryGetValue(HitResult.Ok, out int countKatu);
switch (score.Ruleset.ID)
{