From 259c0964fd03d66dcff7112f61f4dde8d139db7c Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Mon, 16 Jan 2017 23:14:35 +0300 Subject: [PATCH] Specify ScoreProcessor.Judgements.Capacity in order to avoid List internal auto reallocations --- osu.Game.Modes.Catch/CatchRuleset.cs | 2 +- osu.Game.Modes.Mania/ManiaRuleset.cs | 2 +- osu.Game.Modes.Osu/OsuRuleset.cs | 2 +- osu.Game.Modes.Osu/OsuScoreProcessor.cs | 10 +++++----- osu.Game.Modes.Taiko/TaikoRuleset.cs | 2 +- osu.Game/Modes/Ruleset.cs | 2 +- osu.Game/Modes/ScoreProcesssor.cs | 5 +++-- osu.Game/Screens/Play/Player.cs | 2 +- 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/osu.Game.Modes.Catch/CatchRuleset.cs b/osu.Game.Modes.Catch/CatchRuleset.cs index eac762b4a0..d70b2f4513 100644 --- a/osu.Game.Modes.Catch/CatchRuleset.cs +++ b/osu.Game.Modes.Catch/CatchRuleset.cs @@ -18,7 +18,7 @@ namespace osu.Game.Modes.Catch protected override PlayMode PlayMode => PlayMode.Catch; - public override ScoreProcessor CreateScoreProcessor() => null; + public override ScoreProcessor CreateScoreProcessor(int hitObjectsNumber) => null; public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); } diff --git a/osu.Game.Modes.Mania/ManiaRuleset.cs b/osu.Game.Modes.Mania/ManiaRuleset.cs index e91b2ed02e..94e6049402 100644 --- a/osu.Game.Modes.Mania/ManiaRuleset.cs +++ b/osu.Game.Modes.Mania/ManiaRuleset.cs @@ -19,7 +19,7 @@ namespace osu.Game.Modes.Mania protected override PlayMode PlayMode => PlayMode.Mania; - public override ScoreProcessor CreateScoreProcessor() => null; + public override ScoreProcessor CreateScoreProcessor(int hitObjectsNumber) => null; public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); } diff --git a/osu.Game.Modes.Osu/OsuRuleset.cs b/osu.Game.Modes.Osu/OsuRuleset.cs index 15799b134a..e81b623d73 100644 --- a/osu.Game.Modes.Osu/OsuRuleset.cs +++ b/osu.Game.Modes.Osu/OsuRuleset.cs @@ -17,7 +17,7 @@ namespace osu.Game.Modes.Osu public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); - public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(); + public override ScoreProcessor CreateScoreProcessor(int hitObjectsNumber) => new OsuScoreProcessor(hitObjectsNumber); protected override PlayMode PlayMode => PlayMode.Osu; } diff --git a/osu.Game.Modes.Osu/OsuScoreProcessor.cs b/osu.Game.Modes.Osu/OsuScoreProcessor.cs index 572506050b..e10678b8b3 100644 --- a/osu.Game.Modes.Osu/OsuScoreProcessor.cs +++ b/osu.Game.Modes.Osu/OsuScoreProcessor.cs @@ -1,11 +1,6 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using osu.Game.Modes.Objects.Drawables; using osu.Game.Modes.Osu.Objects.Drawables; @@ -13,6 +8,11 @@ namespace osu.Game.Modes.Osu { class OsuScoreProcessor : ScoreProcessor { + public OsuScoreProcessor(int hitObjectsNumber) + : base(hitObjectsNumber) + { + } + protected override void UpdateCalculations(JudgementInfo judgement) { if (judgement != null) diff --git a/osu.Game.Modes.Taiko/TaikoRuleset.cs b/osu.Game.Modes.Taiko/TaikoRuleset.cs index e706387aaa..b7e677792c 100644 --- a/osu.Game.Modes.Taiko/TaikoRuleset.cs +++ b/osu.Game.Modes.Taiko/TaikoRuleset.cs @@ -19,7 +19,7 @@ namespace osu.Game.Modes.Taiko protected override PlayMode PlayMode => PlayMode.Taiko; - public override ScoreProcessor CreateScoreProcessor() => null; + public override ScoreProcessor CreateScoreProcessor(int hitObjectsNumber) => null; public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); } diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Modes/Ruleset.cs index b0304f6576..e3aea99991 100644 --- a/osu.Game/Modes/Ruleset.cs +++ b/osu.Game/Modes/Ruleset.cs @@ -18,7 +18,7 @@ namespace osu.Game.Modes public abstract ScoreOverlay CreateScoreOverlay(); - public abstract ScoreProcessor CreateScoreProcessor(); + public abstract ScoreProcessor CreateScoreProcessor(int hitObjectsNumber); public abstract HitRenderer CreateHitRendererWith(List objects); diff --git a/osu.Game/Modes/ScoreProcesssor.cs b/osu.Game/Modes/ScoreProcesssor.cs index a34915eaef..a6cf8857b6 100644 --- a/osu.Game/Modes/ScoreProcesssor.cs +++ b/osu.Game/Modes/ScoreProcesssor.cs @@ -29,11 +29,12 @@ namespace osu.Game.Modes public readonly BindableInt HighestCombo = new BindableInt(); - public readonly List Judgements = new List(); + public readonly List Judgements; - public ScoreProcessor() + public ScoreProcessor(int hitObjectsNumber) { Combo.ValueChanged += delegate { HighestCombo.Value = Math.Max(HighestCombo.Value, Combo.Value); }; + Judgements = new List(hitObjectsNumber); } public void AddJudgement(JudgementInfo judgement) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 67f7e99a75..f719d27fc3 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -92,7 +92,7 @@ namespace osu.Game.Screens.Play ruleset = Ruleset.GetRuleset(usablePlayMode); var scoreOverlay = ruleset.CreateScoreOverlay(); - scoreOverlay.BindProcessor(scoreProcessor = ruleset.CreateScoreProcessor()); + scoreOverlay.BindProcessor(scoreProcessor = ruleset.CreateScoreProcessor(beatmap.HitObjects.Count)); hitRenderer = ruleset.CreateHitRendererWith(beatmap.HitObjects);