mirror of
https://github.com/ppy/osu.git
synced 2025-02-08 20:33:04 +08:00
Cache created judgement in HitObject
This commit is contained in:
parent
0ebea77392
commit
c500264306
@ -80,7 +80,7 @@ namespace osu.Game.Rulesets.Catch.Tests
|
|||||||
{
|
{
|
||||||
fruit.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
|
fruit.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
|
||||||
var drawableFruit = new DrawableFruit(fruit) { X = x };
|
var drawableFruit = new DrawableFruit(fruit) { X = x };
|
||||||
var judgement = fruit.CreateJudgement();
|
var judgement = fruit.Judgement;
|
||||||
catcher.OnNewResult(drawableFruit, new CatchJudgementResult(fruit, judgement)
|
catcher.OnNewResult(drawableFruit, new CatchJudgementResult(fruit, judgement)
|
||||||
{
|
{
|
||||||
Type = judgement.MaxResult
|
Type = judgement.MaxResult
|
||||||
|
@ -293,7 +293,7 @@ namespace osu.Game.Rulesets.Catch.Tests
|
|||||||
|
|
||||||
private JudgementResult createResult(CatchHitObject hitObject)
|
private JudgementResult createResult(CatchHitObject hitObject)
|
||||||
{
|
{
|
||||||
return new CatchJudgementResult(hitObject, hitObject.CreateJudgement())
|
return new CatchJudgementResult(hitObject, hitObject.Judgement)
|
||||||
{
|
{
|
||||||
Type = catcher.CanCatch(hitObject) ? HitResult.Great : HitResult.Miss
|
Type = catcher.CanCatch(hitObject) ? HitResult.Great : HitResult.Miss
|
||||||
};
|
};
|
||||||
|
@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int BananaIndex;
|
public int BananaIndex;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new CatchBananaJudgement();
|
protected override Judgement CreateJudgement() => new CatchBananaJudgement();
|
||||||
|
|
||||||
private static readonly IList<HitSampleInfo> default_banana_samples = new List<HitSampleInfo> { new BananaHitSampleInfo() }.AsReadOnly();
|
private static readonly IList<HitSampleInfo> default_banana_samples = new List<HitSampleInfo> { new BananaHitSampleInfo() }.AsReadOnly();
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
{
|
{
|
||||||
public override bool LastInCombo => true;
|
public override bool LastInCombo => true;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
protected override void CreateNestedHitObjects(CancellationToken cancellationToken)
|
protected override void CreateNestedHitObjects(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
@ -8,6 +8,6 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
{
|
{
|
||||||
public class Droplet : PalpableCatchHitObject
|
public class Droplet : PalpableCatchHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new CatchDropletJudgement();
|
protected override Judgement CreateJudgement() => new CatchDropletJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
{
|
{
|
||||||
public class Fruit : PalpableCatchHitObject
|
public class Fruit : PalpableCatchHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new CatchJudgement();
|
protected override Judgement CreateJudgement() => new CatchJudgement();
|
||||||
|
|
||||||
public static FruitVisualRepresentation GetVisualRepresentation(int indexInBeatmap) => (FruitVisualRepresentation)(indexInBeatmap % 4);
|
public static FruitVisualRepresentation GetVisualRepresentation(int indexInBeatmap) => (FruitVisualRepresentation)(indexInBeatmap % 4);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private const float base_scoring_distance = 100;
|
private const float base_scoring_distance = 100;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
public int RepeatCount { get; set; }
|
public int RepeatCount { get; set; }
|
||||||
|
|
||||||
|
@ -8,6 +8,6 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
{
|
{
|
||||||
public class TinyDroplet : Droplet
|
public class TinyDroplet : Droplet
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new CatchTinyDropletJudgement();
|
protected override Judgement CreateJudgement() => new CatchTinyDropletJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,6 @@ namespace osu.Game.Rulesets.Mania.Objects
|
|||||||
set => major.Value = value;
|
set => major.Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ namespace osu.Game.Rulesets.Mania.Objects
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Mania.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class HoldNoteBody : ManiaHitObject
|
public class HoldNoteBody : ManiaHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new HoldNoteBodyJudgement();
|
protected override Judgement CreateJudgement() => new HoldNoteBodyJudgement();
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,6 @@ namespace osu.Game.Rulesets.Mania.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class Note : ManiaHitObject
|
public class Note : ManiaHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new ManiaJudgement();
|
protected override Judgement CreateJudgement() => new ManiaJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Mania.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const double RELEASE_WINDOW_LENIENCE = 1.5;
|
public const double RELEASE_WINDOW_LENIENCE = 1.5;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new ManiaJudgement();
|
protected override Judgement CreateJudgement() => new ManiaJudgement();
|
||||||
|
|
||||||
public override double MaximumJudgementOffset => base.MaximumJudgementOffset * RELEASE_WINDOW_LENIENCE;
|
public override double MaximumJudgementOffset => base.MaximumJudgementOffset * RELEASE_WINDOW_LENIENCE;
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
|
|
||||||
// multipled by 2 to nullify the score multiplier. (autoplay mod selected)
|
// multipled by 2 to nullify the score multiplier. (autoplay mod selected)
|
||||||
long totalScore = scoreProcessor.TotalScore.Value * 2;
|
long totalScore = scoreProcessor.TotalScore.Value * 2;
|
||||||
return totalScore == (int)(drawableSpinner.Result.TotalRotation / 360) * scoreProcessor.GetBaseScoreForResult(new SpinnerTick().CreateJudgement().MaxResult);
|
return totalScore == (int)(drawableSpinner.Result.TotalRotation / 360) * scoreProcessor.GetBaseScoreForResult(new SpinnerTick().Judgement.MaxResult);
|
||||||
});
|
});
|
||||||
|
|
||||||
addSeekStep(0);
|
addSeekStep(0);
|
||||||
|
@ -79,7 +79,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new OsuJudgement();
|
protected override Judgement CreateJudgement() => new OsuJudgement();
|
||||||
}
|
}
|
||||||
|
|
||||||
private partial class StrictTrackingDrawableSliderTail : DrawableSliderTail
|
private partial class StrictTrackingDrawableSliderTail : DrawableSliderTail
|
||||||
|
@ -8,6 +8,6 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
{
|
{
|
||||||
public class HitCircle : OsuHitObject
|
public class HitCircle : OsuHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new OsuJudgement();
|
protected override Judgement CreateJudgement() => new OsuJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
TailSamples = this.GetNodeSamples(repeatCount + 1);
|
TailSamples = this.GetNodeSamples(repeatCount + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => ClassicSliderBehaviour
|
protected override Judgement CreateJudgement() => ClassicSliderBehaviour
|
||||||
// Final combo is provided by the slider itself - see logic in `DrawableSlider.CheckForResult()`
|
// Final combo is provided by the slider itself - see logic in `DrawableSlider.CheckForResult()`
|
||||||
? new OsuJudgement()
|
? new OsuJudgement()
|
||||||
// Final combo is provided by the tail circle - see `SliderTailCircle`
|
// Final combo is provided by the tail circle - see `SliderTailCircle`
|
||||||
|
@ -46,7 +46,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new SliderEndJudgement();
|
protected override Judgement CreateJudgement() => new SliderEndJudgement();
|
||||||
|
|
||||||
public class SliderEndJudgement : OsuJudgement
|
public class SliderEndJudgement : OsuJudgement
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,6 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ClassicSliderBehaviour;
|
public bool ClassicSliderBehaviour;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => ClassicSliderBehaviour ? new SliderTickJudgement() : base.CreateJudgement();
|
protected override Judgement CreateJudgement() => ClassicSliderBehaviour ? new SliderTickJudgement() : base.CreateJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => ClassicSliderBehaviour ? new LegacyTailJudgement() : new TailJudgement();
|
protected override Judgement CreateJudgement() => ClassicSliderBehaviour ? new LegacyTailJudgement() : new TailJudgement();
|
||||||
|
|
||||||
public class LegacyTailJudgement : OsuJudgement
|
public class LegacyTailJudgement : OsuJudgement
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,6 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new SliderTickJudgement();
|
protected override Judgement CreateJudgement() => new SliderTickJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new OsuJudgement();
|
protected override Judgement CreateJudgement() => new OsuJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
{
|
{
|
||||||
public class SpinnerBonusTick : SpinnerTick
|
public class SpinnerBonusTick : SpinnerTick
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new OsuSpinnerBonusTickJudgement();
|
protected override Judgement CreateJudgement() => new OsuSpinnerBonusTickJudgement();
|
||||||
|
|
||||||
public class OsuSpinnerBonusTickJudgement : OsuSpinnerTickJudgement
|
public class OsuSpinnerBonusTickJudgement : OsuSpinnerTickJudgement
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double SpinnerDuration { get; set; }
|
public double SpinnerDuration { get; set; }
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new OsuSpinnerTickJudgement();
|
protected override Judgement CreateJudgement() => new OsuSpinnerTickJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
|
@ -126,11 +126,11 @@ namespace osu.Game.Rulesets.Taiko.Tests
|
|||||||
|
|
||||||
foreach (var nested in beatmap.HitObjects[0].NestedHitObjects)
|
foreach (var nested in beatmap.HitObjects[0].NestedHitObjects)
|
||||||
{
|
{
|
||||||
var nestedJudgement = nested.CreateJudgement();
|
var nestedJudgement = nested.Judgement;
|
||||||
healthProcessor.ApplyResult(new JudgementResult(nested, nestedJudgement) { Type = nestedJudgement.MaxResult });
|
healthProcessor.ApplyResult(new JudgementResult(nested, nestedJudgement) { Type = nestedJudgement.MaxResult });
|
||||||
}
|
}
|
||||||
|
|
||||||
var judgement = beatmap.HitObjects[0].CreateJudgement();
|
var judgement = beatmap.HitObjects[0].Judgement;
|
||||||
healthProcessor.ApplyResult(new JudgementResult(beatmap.HitObjects[0], judgement) { Type = judgement.MaxResult });
|
healthProcessor.ApplyResult(new JudgementResult(beatmap.HitObjects[0], judgement) { Type = judgement.MaxResult });
|
||||||
|
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
@ -159,11 +159,11 @@ namespace osu.Game.Rulesets.Taiko.Tests
|
|||||||
|
|
||||||
foreach (var nested in beatmap.HitObjects[0].NestedHitObjects)
|
foreach (var nested in beatmap.HitObjects[0].NestedHitObjects)
|
||||||
{
|
{
|
||||||
var nestedJudgement = nested.CreateJudgement();
|
var nestedJudgement = nested.Judgement;
|
||||||
healthProcessor.ApplyResult(new JudgementResult(nested, nestedJudgement) { Type = nestedJudgement.MaxResult });
|
healthProcessor.ApplyResult(new JudgementResult(nested, nestedJudgement) { Type = nestedJudgement.MaxResult });
|
||||||
}
|
}
|
||||||
|
|
||||||
var judgement = beatmap.HitObjects[0].CreateJudgement();
|
var judgement = beatmap.HitObjects[0].Judgement;
|
||||||
healthProcessor.ApplyResult(new JudgementResult(beatmap.HitObjects[0], judgement) { Type = judgement.MaxResult });
|
healthProcessor.ApplyResult(new JudgementResult(beatmap.HitObjects[0], judgement) { Type = judgement.MaxResult });
|
||||||
|
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
|
@ -19,6 +19,6 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
set => major.Value = value;
|
set => major.Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
public class StrongNestedHit : StrongNestedHitObject
|
public class StrongNestedHit : StrongNestedHitObject
|
||||||
{
|
{
|
||||||
// The strong hit of the drum roll doesn't actually provide any score.
|
// The strong hit of the drum roll doesn't actually provide any score.
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
public StrongNestedHit(TaikoHitObject parent)
|
public StrongNestedHit(TaikoHitObject parent)
|
||||||
: base(parent)
|
: base(parent)
|
||||||
|
@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
Parent = parent;
|
Parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new TaikoDrumRollTickJudgement();
|
protected override Judgement CreateJudgement() => new TaikoDrumRollTickJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
|
|
||||||
|
@ -7,6 +7,6 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
{
|
{
|
||||||
public class IgnoreHit : Hit
|
public class IgnoreHit : Hit
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
Parent = parent;
|
Parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new TaikoStrongJudgement();
|
protected override Judgement CreateJudgement() => new TaikoStrongJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new TaikoSwellJudgement();
|
protected override Judgement CreateJudgement() => new TaikoSwellJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
{
|
{
|
||||||
public class SwellTick : TaikoHitObject
|
public class SwellTick : TaikoHitObject
|
||||||
{
|
{
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const float DEFAULT_SIZE = 0.475f;
|
public const float DEFAULT_SIZE = 0.475f;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new TaikoJudgement();
|
protected override Judgement CreateJudgement() => new TaikoJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => new TaikoHitWindows();
|
protected override HitWindows CreateHitWindows() => new TaikoHitWindows();
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
static void addCombo(HitObject hitObject, ref int combo)
|
static void addCombo(HitObject hitObject, ref int combo)
|
||||||
{
|
{
|
||||||
if (hitObject.CreateJudgement().MaxResult.AffectsCombo())
|
if (hitObject.Judgement.MaxResult.AffectsCombo())
|
||||||
combo++;
|
combo++;
|
||||||
|
|
||||||
foreach (var nested in hitObject.NestedHitObjects)
|
foreach (var nested in hitObject.NestedHitObjects)
|
||||||
|
@ -655,7 +655,7 @@ namespace osu.Game.Database
|
|||||||
{
|
{
|
||||||
private readonly Judgement judgement;
|
private readonly Judgement judgement;
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => judgement;
|
protected override Judgement CreateJudgement() => judgement;
|
||||||
|
|
||||||
public FakeHit(Judgement judgement)
|
public FakeHit(Judgement judgement)
|
||||||
{
|
{
|
||||||
|
@ -113,9 +113,9 @@ namespace osu.Game.Rulesets.Difficulty
|
|||||||
private IEnumerable<HitResult> getPerfectHitResults(HitObject hitObject)
|
private IEnumerable<HitResult> getPerfectHitResults(HitObject hitObject)
|
||||||
{
|
{
|
||||||
foreach (HitObject nested in hitObject.NestedHitObjects)
|
foreach (HitObject nested in hitObject.NestedHitObjects)
|
||||||
yield return nested.CreateJudgement().MaxResult;
|
yield return nested.Judgement.MaxResult;
|
||||||
|
|
||||||
yield return hitObject.CreateJudgement().MaxResult;
|
yield return hitObject.Judgement.MaxResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -770,7 +770,7 @@ namespace osu.Game.Rulesets.Objects.Drawables
|
|||||||
private void ensureEntryHasResult()
|
private void ensureEntryHasResult()
|
||||||
{
|
{
|
||||||
Debug.Assert(Entry != null);
|
Debug.Assert(Entry != null);
|
||||||
Entry.Result ??= CreateResult(HitObject.CreateJudgement())
|
Entry.Result ??= CreateResult(HitObject.Judgement)
|
||||||
?? throw new InvalidOperationException($"{GetType().ReadableName()} must provide a {nameof(JudgementResult)} through {nameof(CreateResult)}.");
|
?? throw new InvalidOperationException($"{GetType().ReadableName()} must provide a {nameof(JudgementResult)} through {nameof(CreateResult)}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,11 +162,19 @@ namespace osu.Game.Rulesets.Objects
|
|||||||
|
|
||||||
protected void AddNested(HitObject hitObject) => nestedHitObjects.Add(hitObject);
|
protected void AddNested(HitObject hitObject) => nestedHitObjects.Add(hitObject);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="Judgement"/> that represents the scoring information for this <see cref="HitObject"/>.
|
||||||
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
|
public Judgement Judgement => judgement ??= CreateJudgement();
|
||||||
|
|
||||||
|
private Judgement judgement;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the <see cref="Judgement"/> that represents the scoring information for this <see cref="HitObject"/>.
|
/// Creates the <see cref="Judgement"/> that represents the scoring information for this <see cref="HitObject"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[NotNull]
|
[NotNull]
|
||||||
public virtual Judgement CreateJudgement() => new Judgement();
|
protected virtual Judgement CreateJudgement() => new Judgement();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the <see cref="HitWindows"/> for this <see cref="HitObject"/>.
|
/// Creates the <see cref="HitWindows"/> for this <see cref="HitObject"/>.
|
||||||
|
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Objects.Legacy
|
|||||||
|
|
||||||
public int ComboOffset { get; set; }
|
public int ComboOffset { get; set; }
|
||||||
|
|
||||||
public override Judgement CreateJudgement() => new IgnoreJudgement();
|
protected override Judgement CreateJudgement() => new IgnoreJudgement();
|
||||||
|
|
||||||
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ namespace osu.Game.Rulesets.Scoring
|
|||||||
|
|
||||||
foreach (var obj in EnumerateHitObjects(beatmap))
|
foreach (var obj in EnumerateHitObjects(beatmap))
|
||||||
{
|
{
|
||||||
var judgement = obj.CreateJudgement();
|
var judgement = obj.Judgement;
|
||||||
|
|
||||||
var result = CreateResult(obj, judgement);
|
var result = CreateResult(obj, judgement);
|
||||||
if (result == null)
|
if (result == null)
|
||||||
|
@ -141,7 +141,7 @@ namespace osu.Game.Rulesets.Scoring
|
|||||||
|
|
||||||
void increaseHp(HitObject hitObject)
|
void increaseHp(HitObject hitObject)
|
||||||
{
|
{
|
||||||
double amount = GetHealthIncreaseFor(hitObject, hitObject.CreateJudgement().MaxResult);
|
double amount = GetHealthIncreaseFor(hitObject, hitObject.Judgement.MaxResult);
|
||||||
currentHpUncapped += amount;
|
currentHpUncapped += amount;
|
||||||
currentHp = Math.Max(0, Math.Min(1, currentHp + amount));
|
currentHp = Math.Max(0, Math.Min(1, currentHp + amount));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user