diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs index 183c6f0f12..403cedde8c 100644 --- a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs +++ b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs @@ -29,9 +29,9 @@ namespace osu.Game.Rulesets.Catch.Scoring private const double harshness = 0.01; - protected override void OnNewJudgement(JudgementResult result) + protected override void ApplyResult(JudgementResult result) { - base.OnNewJudgement(result); + base.ApplyResult(result); if (result.Type == HitResult.Miss) { diff --git a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs index 7b52066d15..ffb93fd679 100644 --- a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs +++ b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs @@ -59,7 +59,7 @@ namespace osu.Game.Rulesets.Catch.UI public override void Add(DrawableHitObject h) { - h.OnJudgement += onJudgement; + h.OnNewResult += onNewResult; base.Add(h); @@ -67,7 +67,7 @@ namespace osu.Game.Rulesets.Catch.UI fruit.CheckPosition = CheckIfWeCanCatch; } - private void onJudgement(DrawableHitObject judgedObject, JudgementResult result) + private void onNewResult(DrawableHitObject judgedObject, JudgementResult result) => catcherArea.OnJudgement((DrawableCatchHitObject)judgedObject, result); } } diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs index 289bcc3d34..12b32c46ee 100644 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs @@ -121,9 +121,9 @@ namespace osu.Game.Rulesets.Mania.Scoring } } - protected override void OnNewJudgement(JudgementResult result) + protected override void ApplyResult(JudgementResult result) { - base.OnNewJudgement(result); + base.ApplyResult(result); bool isTick = result.Judgement is HoldNoteTickJudgement; diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs index ca7173ec50..500f999dd6 100644 --- a/osu.Game.Rulesets.Mania/UI/Column.cs +++ b/osu.Game.Rulesets.Mania/UI/Column.cs @@ -131,12 +131,12 @@ namespace osu.Game.Rulesets.Mania.UI public override void Add(DrawableHitObject hitObject) { hitObject.AccentColour = AccentColour; - hitObject.OnJudgement += OnJudgement; + hitObject.OnNewResult += OnNewResult; HitObjects.Add(hitObject); } - internal void OnJudgement(DrawableHitObject judgedObject, JudgementResult result) + internal void OnNewResult(DrawableHitObject judgedObject, JudgementResult result) { if (!result.IsHit || !judgedObject.DisplayJudgement || !DisplayJudgements) return; diff --git a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs index 9072e044bd..f5993e61de 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs @@ -156,12 +156,12 @@ namespace osu.Game.Rulesets.Mania.UI var maniaObject = (ManiaHitObject)h.HitObject; int columnIndex = maniaObject.Column - firstColumnIndex; Columns.ElementAt(columnIndex).Add(h); - h.OnJudgement += OnJudgement; + h.OnNewResult += OnNewResult; } public void Add(BarLine barline) => base.Add(new DrawableBarLine(barline)); - internal void OnJudgement(DrawableHitObject judgedObject, JudgementResult result) + internal void OnNewResult(DrawableHitObject judgedObject, JudgementResult result) { if (!judgedObject.DisplayJudgement || !DisplayJudgements) return; diff --git a/osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs b/osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs index 2da4d8265d..3f9464a98f 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestCaseSlider.cs @@ -304,13 +304,13 @@ namespace osu.Game.Rulesets.Osu.Tests foreach (var mod in Mods.OfType()) mod.ApplyToDrawableHitObjects(new[] { drawable }); - drawable.OnJudgement += onJudgement; + drawable.OnNewResult += onNewResult; Add(drawable); } private float judgementOffsetDirection = 1; - private void onJudgement(DrawableHitObject judgedObject, JudgementResult result) + private void onNewResult(DrawableHitObject judgedObject, JudgementResult result) { var osuObject = judgedObject as DrawableOsuHitObject; if (osuObject == null) diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs index 2986b4b5dc..d935c28365 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs @@ -51,9 +51,9 @@ namespace osu.Game.Rulesets.Osu.Scoring private const double harshness = 0.01; - protected override void OnNewJudgement(JudgementResult result) + protected override void ApplyResult(JudgementResult result) { - base.OnNewJudgement(result); + base.ApplyResult(result); var osuResult = (OsuJudgementResult)result; diff --git a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs index 8a898fb5e2..989b1ed964 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs @@ -50,7 +50,7 @@ namespace osu.Game.Rulesets.Osu.UI public override void Add(DrawableHitObject h) { - h.OnJudgement += onJudgement; + h.OnNewResult += onNewResult; var c = h as IDrawableHitObjectWithProxiedApproach; if (c != null) @@ -64,7 +64,7 @@ namespace osu.Game.Rulesets.Osu.UI connectionLayer.HitObjects = HitObjects.Objects.Select(d => d.HitObject).OfType(); } - private void onJudgement(DrawableHitObject judgedObject, JudgementResult result) + private void onNewResult(DrawableHitObject judgedObject, JudgementResult result) { if (!judgedObject.DisplayJudgement || !DisplayJudgements) return; diff --git a/osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs b/osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs index 35cb94e8de..23c57e0767 100644 --- a/osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko.Tests/TestCaseTaikoPlayfield.cs @@ -140,18 +140,18 @@ namespace osu.Game.Rulesets.Taiko.Tests var h = new DrawableTestHit(hit) { X = RNG.NextSingle(hitResult == HitResult.Good ? -0.1f : -0.05f, hitResult == HitResult.Good ? 0.1f : 0.05f) }; - ((TaikoPlayfield)rulesetContainer.Playfield).OnJudgement(h, new JudgementResult(new TaikoJudgement()) { Type = hitResult }); + ((TaikoPlayfield)rulesetContainer.Playfield).OnNewResult(h, new JudgementResult(new TaikoJudgement()) { Type = hitResult }); if (RNG.Next(10) == 0) { - ((TaikoPlayfield)rulesetContainer.Playfield).OnJudgement(h, new JudgementResult(new TaikoJudgement()) { Type = hitResult }); - ((TaikoPlayfield)rulesetContainer.Playfield).OnJudgement(h, new JudgementResult(new TaikoStrongJudgement()) { Type = HitResult.Great }); + ((TaikoPlayfield)rulesetContainer.Playfield).OnNewResult(h, new JudgementResult(new TaikoJudgement()) { Type = hitResult }); + ((TaikoPlayfield)rulesetContainer.Playfield).OnNewResult(h, new JudgementResult(new TaikoStrongJudgement()) { Type = HitResult.Great }); } } private void addMissJudgement() { - ((TaikoPlayfield)rulesetContainer.Playfield).OnJudgement(new DrawableTestHit(new Hit()), new JudgementResult(new TaikoJudgement()) { Type = HitResult.Miss }); + ((TaikoPlayfield)rulesetContainer.Playfield).OnNewResult(new DrawableTestHit(new Hit()), new JudgementResult(new TaikoJudgement()) { Type = HitResult.Miss }); } private void addBarLine(bool major, double delay = scroll_time) diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs index a984af3b51..18669cec2b 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs @@ -39,7 +39,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables foreach (var tick in drumRoll.NestedHitObjects.OfType()) { var newTick = new DrawableDrumRollTick(tick); - newTick.OnJudgement += onTickJudgement; + newTick.OnNewResult += onNewTickResult; AddNested(newTick); tickContainer.Add(newTick); @@ -60,7 +60,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables colourEngaged = colours.YellowDarker; } - private void onTickJudgement(DrawableHitObject obj, JudgementResult result) + private void onNewTickResult(DrawableHitObject obj, JudgementResult result) { if (result.Type > HitResult.Miss) rollingHits++; diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs index f5c5fcbe9c..cf33141027 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs @@ -76,9 +76,9 @@ namespace osu.Game.Rulesets.Taiko.Scoring hpIncreaseMiss = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, hp_miss_min, hp_miss_mid, hp_miss_max); } - protected override void OnNewJudgement(JudgementResult result) + protected override void ApplyResult(JudgementResult result) { - base.OnNewJudgement(result); + base.ApplyResult(result); bool isTick = result.Judgement is TaikoDrumRollTickJudgement; diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs index 5202fe00ad..8078f648e8 100644 --- a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs @@ -209,7 +209,7 @@ namespace osu.Game.Rulesets.Taiko.UI public override void Add(DrawableHitObject h) { - h.OnJudgement += OnJudgement; + h.OnNewResult += OnNewResult; base.Add(h); @@ -224,7 +224,7 @@ namespace osu.Game.Rulesets.Taiko.UI } } - internal void OnJudgement(DrawableHitObject judgedObject, JudgementResult result) + internal void OnNewResult(DrawableHitObject judgedObject, JudgementResult result) { if (!DisplayJudgements) return; diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index a22a7a616b..0bc7a160ce 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -35,8 +35,15 @@ namespace osu.Game.Rulesets.Objects.Drawables private readonly Lazy> nestedHitObjects = new Lazy>(); public IEnumerable NestedHitObjects => nestedHitObjects.IsValueCreated ? nestedHitObjects.Value : Enumerable.Empty(); - public event Action OnJudgement; - public event Action OnJudgementRemoved; + /// + /// Invoked when a has been applied by this or a nested . + /// + public event Action OnNewResult; + + /// + /// Invoked when a has been reset by this or a nested . + /// + public event Action OnResultReset; /// /// Whether a visible judgement should be displayed when this representation is hit. @@ -143,7 +150,7 @@ namespace osu.Game.Rulesets.Objects.Drawables if (Result.TimeOffset + endTime < Time.Current) { - OnJudgementRemoved?.Invoke(this, Result); + OnResultReset?.Invoke(this, Result); Result.Type = HitResult.None; State.Value = ArmedState.Idle; @@ -162,8 +169,8 @@ namespace osu.Game.Rulesets.Objects.Drawables protected virtual void AddNested(DrawableHitObject h) { - h.OnJudgement += (d, r) => OnJudgement?.Invoke(d, r); - h.OnJudgementRemoved += (d, r) => OnJudgementRemoved?.Invoke(d, r); + h.OnNewResult += (d, r) => OnNewResult?.Invoke(d, r); + h.OnResultReset += (d, r) => OnResultReset?.Invoke(d, r); h.ApplyCustomUpdateState += (d, j) => ApplyCustomUpdateState?.Invoke(d, j); nestedHitObjects.Value.Add(h); @@ -195,7 +202,7 @@ namespace osu.Game.Rulesets.Objects.Drawables break; } - OnJudgement?.Invoke(this, Result); + OnNewResult?.Invoke(this, Result); } /// diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 985cfce6aa..b727a0d685 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -195,8 +195,8 @@ namespace osu.Game.Rulesets.Scoring { Debug.Assert(base_portion + combo_portion == 1.0); - rulesetContainer.OnJudgement += AddJudgement; - rulesetContainer.OnJudgementRemoved += RemoveJudgement; + rulesetContainer.OnNewResult += applyResult; + rulesetContainer.OnResultReset += resetResult; SimulateAutoplay(rulesetContainer.Beatmap); Reset(true); @@ -210,10 +210,19 @@ namespace osu.Game.Rulesets.Scoring Mode.ValueChanged += _ => updateScore(); } + /// + /// Applies any properties of the which affect scoring to this . + /// + /// The to read properties from. protected virtual void ApplyBeatmap(Beatmap beatmap) { } + /// + /// Simulates an autoplay of the to determine scoring values. + /// + /// This provided temporarily. DO NOT USE. + /// The to simulate. protected virtual void SimulateAutoplay(Beatmap beatmap) { foreach (var obj in beatmap.HitObjects) @@ -230,18 +239,17 @@ namespace osu.Game.Rulesets.Scoring var result = CreateJudgementResult(obj.Judgement); result.Type = obj.Judgement.MaxResult; - AddJudgement(result); + applyResult(result); } } /// - /// Adds a judgement to this ScoreProcessor. + /// Applies the score change of a to this . /// - /// The judgement to add. - /// The judgement scoring result. - protected void AddJudgement(JudgementResult result) + /// The to apply. + private void applyResult(JudgementResult result) { - OnNewJudgement(result); + ApplyResult(result); updateScore(); UpdateFailed(); @@ -249,22 +257,21 @@ namespace osu.Game.Rulesets.Scoring } /// - /// Removes a judgement from this ScoreProcessor. + /// Resets the score change of a that was applied to this . /// /// The judgement to remove. /// The judgement scoring result. - protected void RemoveJudgement(JudgementResult result) + private void resetResult(JudgementResult result) { - OnJudgementRemoved(result); + ResetResult(result); updateScore(); } /// - /// Applies a judgement. + /// Applies the score change of a to this . /// - /// The judgement to apply/ - /// The judgement scoring result. - protected virtual void OnNewJudgement(JudgementResult result) + /// The to apply. + protected virtual void ApplyResult(JudgementResult result) { result.ComboAtJudgement = Combo; result.HighestComboAtJudgement = HighestCombo; @@ -299,11 +306,11 @@ namespace osu.Game.Rulesets.Scoring } /// - /// Removes a judgement. This should reverse everything in . + /// Resets the score change of a that was applied to this . /// /// The judgement to remove. /// The judgement scoring result. - protected virtual void OnJudgementRemoved(JudgementResult result) + protected virtual void ResetResult(JudgementResult result) { Combo.Value = result.ComboAtJudgement; HighestCombo.Value = result.HighestComboAtJudgement; @@ -356,6 +363,10 @@ namespace osu.Game.Rulesets.Scoring bonusScore = 0; } + /// + /// Creates the that represents the scoring result for a . + /// + /// The that provides the scoring information. protected virtual JudgementResult CreateJudgementResult(Judgement judgement) => new JudgementResult(judgement); } diff --git a/osu.Game/Rulesets/UI/RulesetContainer.cs b/osu.Game/Rulesets/UI/RulesetContainer.cs index e890cccc3c..23ec0575e3 100644 --- a/osu.Game/Rulesets/UI/RulesetContainer.cs +++ b/osu.Game/Rulesets/UI/RulesetContainer.cs @@ -182,8 +182,15 @@ namespace osu.Game.Rulesets.UI public abstract class RulesetContainer : RulesetContainer where TObject : HitObject { - public event Action OnJudgement; - public event Action OnJudgementRemoved; + /// + /// Invoked when a has been applied by any . + /// + public event Action OnNewResult; + + /// + /// Invoked when a has been reset by any . + /// + public event Action OnResultReset; /// /// The Beatmap @@ -290,8 +297,8 @@ namespace osu.Game.Rulesets.UI if (drawableObject == null) continue; - drawableObject.OnJudgement += (_, r) => OnJudgement?.Invoke(r); - drawableObject.OnJudgementRemoved += (_, r) => OnJudgementRemoved?.Invoke(r); + drawableObject.OnNewResult += (_, r) => OnNewResult?.Invoke(r); + drawableObject.OnResultReset += (_, r) => OnResultReset?.Invoke(r); Playfield.Add(drawableObject); }