From b9909ed1cfd3ba43ba9daf8daf2b6c5809fb41fd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 15 Jan 2018 18:20:43 +0900 Subject: [PATCH] Refactor addition of hitobjects --- osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs | 41 +++++--------------- osu.Game.Rulesets.Mania/UI/ManiaStage.cs | 8 +++- 2 files changed, 16 insertions(+), 33 deletions(-) diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 26e4f5115f..ed973d6962 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -9,9 +9,8 @@ using System; using System.Collections.Generic; using System.Linq; using osu.Framework.Configuration; -using osu.Game.Rulesets.Judgements; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Game.Rulesets.Mania.Beatmaps; -using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.UI.Scrolling; @@ -36,18 +35,18 @@ namespace osu.Game.Rulesets.Mania.UI public List Columns => stages.SelectMany(x => x.Columns).ToList(); - public ManiaPlayfield(List stageDefinition) + public ManiaPlayfield(List stageDefinitions) : base(ScrollingDirection.Up) { - if (stageDefinition == null) - throw new ArgumentNullException(nameof(stageDefinition)); + if (stageDefinitions == null) + throw new ArgumentNullException(nameof(stageDefinitions)); - if (stageDefinition.Count <= 0) + if (stageDefinitions.Count <= 0) throw new ArgumentException("Can't have zero or fewer stages."); Inverted.Value = true; - var stageSpacing = 300 / stageDefinition.Count; + var stageSpacing = 300 / stageDefinitions.Count; InternalChildren = new Drawable[] { @@ -63,9 +62,9 @@ namespace osu.Game.Rulesets.Mania.UI }; int firstColumnIndex = 0; - for (int i = 0; i < stageDefinition.Count; i++) + for (int i = 0; i < stageDefinitions.Count; i++) { - var newStage = new ManiaStage(i, firstColumnIndex, stageDefinition[i]); + var newStage = new ManiaStage(i, firstColumnIndex, stageDefinitions[i]); newStage.SpecialColumn.BindTo(SpecialColumnPosition); newStage.VisibleTimeRange.BindTo(VisibleTimeRange); newStage.Inverted.BindTo(Inverted); @@ -77,27 +76,9 @@ namespace osu.Game.Rulesets.Mania.UI } } - public override void OnJudgement(DrawableHitObject judgedObject, Judgement judgement) - { - var maniaObject = (ManiaHitObject)judgedObject.HitObject; - int column = maniaObject.Column; - getStageByColumn(column).AddJudgement(judgedObject, judgement); - } + public override void Add(DrawableHitObject h) => getStageByColumn(((ManiaHitObject)h.HitObject).Column).Add(h); - public override void Add(DrawableHitObject h) - { - int column = ((ManiaHitObject)h.HitObject).Column; - var stage = getStageByColumn(column); - stage.Add(h); - } - - public void Add(BarLine barline) - { - foreach (var single in stages) - { - single.HitObjects.Add(new DrawableBarLine(barline)); - } - } + public void Add(BarLine barline) => stages.ForEach(s => s.Add(barline)); private ManiaStage getStageByColumn(int column) { @@ -106,9 +87,7 @@ namespace osu.Game.Rulesets.Mania.UI { sum = sum + stage.Columns.Count; if (sum > column) - { return stage; - } } return null; diff --git a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs index f0a9f92215..e0c1658054 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs @@ -13,6 +13,7 @@ using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.UI.Scrolling; using OpenTK; @@ -178,11 +179,14 @@ namespace osu.Game.Rulesets.Mania.UI public override void Add(DrawableHitObject h) { - int columnIndex = ((ManiaHitObject)h.HitObject).Column - firstColumnIndex; + var maniaObject = (ManiaHitObject)h.HitObject; + int columnIndex = maniaObject.Column - firstColumnIndex; Columns.ElementAt(columnIndex).Add(h); } - public void AddJudgement(DrawableHitObject judgedObject, Judgement judgement) + public void Add(BarLine barline) => base.Add(new DrawableBarLine(barline)); + + public override void OnJudgement(DrawableHitObject judgedObject, Judgement judgement) { var maniaObject = (ManiaHitObject)judgedObject.HitObject; int columnIndex = maniaObject.Column - firstColumnIndex;