mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 08:20:00 +09:00
Add MaxScore to correctly account for the maximum attainable score of DrawableHitObjects.
This commit is contained in:
@ -84,18 +84,18 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
|
|
||||||
double hitOffset = Math.Abs(Judgement.TimeOffset);
|
double hitOffset = Math.Abs(Judgement.TimeOffset);
|
||||||
|
|
||||||
|
OsuJudgementInfo osuJudgement = Judgement as OsuJudgementInfo;
|
||||||
|
|
||||||
if (hitOffset < hit50)
|
if (hitOffset < hit50)
|
||||||
{
|
{
|
||||||
Judgement.Result = HitResult.Hit;
|
Judgement.Result = HitResult.Hit;
|
||||||
|
|
||||||
OsuJudgementInfo osuInfo = Judgement as OsuJudgementInfo;
|
|
||||||
|
|
||||||
if (hitOffset < hit300)
|
if (hitOffset < hit300)
|
||||||
osuInfo.Score = OsuScoreResult.Hit300;
|
osuJudgement.Score = OsuScoreResult.Hit300;
|
||||||
else if (hitOffset < hit100)
|
else if (hitOffset < hit100)
|
||||||
osuInfo.Score = OsuScoreResult.Hit100;
|
osuJudgement.Score = OsuScoreResult.Hit100;
|
||||||
else if (hitOffset < hit50)
|
else if (hitOffset < hit50)
|
||||||
osuInfo.Score = OsuScoreResult.Hit50;
|
osuJudgement.Score = OsuScoreResult.Hit50;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Judgement.Result = HitResult.Miss;
|
Judgement.Result = HitResult.Miss;
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Modes.Objects;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Game.Modes.Objects.Drawables;
|
||||||
using osu.Framework.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects.Drawables
|
namespace osu.Game.Modes.Osu.Objects.Drawables
|
||||||
{
|
{
|
||||||
@ -19,7 +18,7 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override JudgementInfo CreateJudgementInfo() => new OsuJudgementInfo();
|
public override JudgementInfo CreateJudgementInfo() => new OsuJudgementInfo { MaxScore = OsuScoreResult.Hit300 };
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
@ -49,7 +48,37 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
|
|
||||||
public class OsuJudgementInfo : PositionalJudgementInfo
|
public class OsuJudgementInfo : PositionalJudgementInfo
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The score the user achieved.
|
||||||
|
/// </summary>
|
||||||
public OsuScoreResult Score;
|
public OsuScoreResult Score;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The score which would be achievable on a perfect hit.
|
||||||
|
/// </summary>
|
||||||
|
public OsuScoreResult MaxScore = OsuScoreResult.Hit300;
|
||||||
|
|
||||||
|
public int ScoreValue => scoreToInt(Score);
|
||||||
|
|
||||||
|
public int MaxScoreValue => scoreToInt(MaxScore);
|
||||||
|
|
||||||
|
private int scoreToInt(OsuScoreResult result)
|
||||||
|
{
|
||||||
|
switch (result)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
case OsuScoreResult.Hit50:
|
||||||
|
return 50;
|
||||||
|
case OsuScoreResult.Hit100:
|
||||||
|
return 100;
|
||||||
|
case OsuScoreResult.Hit300:
|
||||||
|
return 300;
|
||||||
|
case OsuScoreResult.SliderTick:
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ComboResult Combo;
|
public ComboResult Combo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
|
|||||||
|
|
||||||
public override bool RemoveWhenNotAlive => false;
|
public override bool RemoveWhenNotAlive => false;
|
||||||
|
|
||||||
|
public override JudgementInfo CreateJudgementInfo() => new OsuJudgementInfo { MaxScore = OsuScoreResult.SliderTick };
|
||||||
|
|
||||||
public DrawableSliderTick(SliderTick sliderTick) : base(sliderTick)
|
public DrawableSliderTick(SliderTick sliderTick) : base(sliderTick)
|
||||||
{
|
{
|
||||||
this.sliderTick = sliderTick;
|
this.sliderTick = sliderTick;
|
||||||
|
@ -36,28 +36,8 @@ namespace osu.Game.Modes.Osu
|
|||||||
|
|
||||||
foreach (OsuJudgementInfo j in Judgements)
|
foreach (OsuJudgementInfo j in Judgements)
|
||||||
{
|
{
|
||||||
switch (j.Score)
|
score += j.ScoreValue;
|
||||||
{
|
maxScore += j.MaxScoreValue;
|
||||||
case OsuScoreResult.Miss:
|
|
||||||
maxScore += 300;
|
|
||||||
break;
|
|
||||||
case OsuScoreResult.Hit50:
|
|
||||||
score += 50;
|
|
||||||
maxScore += 300;
|
|
||||||
break;
|
|
||||||
case OsuScoreResult.Hit100:
|
|
||||||
score += 100;
|
|
||||||
maxScore += 300;
|
|
||||||
break;
|
|
||||||
case OsuScoreResult.Hit300:
|
|
||||||
score += 300;
|
|
||||||
maxScore += 300;
|
|
||||||
break;
|
|
||||||
case OsuScoreResult.SliderTick:
|
|
||||||
score += 10;
|
|
||||||
maxScore += 10;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TotalScore.Value = score;
|
TotalScore.Value = score;
|
||||||
|
Reference in New Issue
Block a user