From f7a908fbfa694c63070216a136f4b175019a1ba8 Mon Sep 17 00:00:00 2001 From: "ANDY840119-PC\\andy840119" Date: Sun, 14 Jan 2018 12:08:09 +0900 Subject: [PATCH] Fix : This (along with OnJudgement above) should be done in the following three steps: . i'm not sure does it means the code i write --- osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs | 23 ++++++++++++-------- osu.Game.Rulesets.Mania/UI/ManiaStage.cs | 16 +++++++++++++- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 00dd082454..18d2f83fd9 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -4,14 +4,11 @@ using osu.Framework.Graphics; using osu.Game.Rulesets.Mania.Objects; using OpenTK; -using OpenTK.Graphics; using osu.Framework.Graphics.Containers; using System; using System.Collections.Generic; using System.Linq; using osu.Framework.Configuration; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.Objects.Drawables; @@ -79,12 +76,14 @@ namespace osu.Game.Rulesets.Mania.UI var currentAction = ManiaAction.Key1; + int stageIndex = 0; foreach (var stage in stageDefinition) { var drawableStage = new ManiaStage(); drawableStage.VisibleTimeRange.BindTo(VisibleTimeRange); - - this.stages.Add(drawableStage); + drawableStage.ColumnStartIndex = stageIndex; + + stages.Add(drawableStage); AddNested(drawableStage); for (int i = 0; i < stage.Columns; i++) @@ -98,6 +97,8 @@ namespace osu.Game.Rulesets.Mania.UI drawableStage.AddColumn(c); AddNested(c); } + + stageIndex = stageIndex + stage.Columns; } Inverted.ValueChanged += invertedChanged; @@ -118,12 +119,16 @@ namespace osu.Game.Rulesets.Mania.UI { var maniaObject = (ManiaHitObject)judgedObject.HitObject; int column = maniaObject.Column; - Columns[column].OnJudgement(judgedObject, judgement); - - getStageByColumn(column).AddJudgement(judgement); + getStageByColumn(column).AddJudgement(judgedObject,judgement); } - public override void Add(DrawableHitObject h) => Columns.ElementAt(((ManiaHitObject)h.HitObject).Column).Add(h); + public override void Add(DrawableHitObject h) + { + // => Columns.ElementAt(((ManiaHitObject)h.HitObject).Column).Add(h) + int column = ((ManiaHitObject)h.HitObject).Column; + var stage = getStageByColumn(column); + stage.Add(h); + } public void Add(BarLine barline) { diff --git a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs index b2f6460914..dee0b8a5bb 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs @@ -10,6 +10,8 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.UI.Scrolling; using OpenTK; using OpenTK.Graphics; @@ -53,6 +55,8 @@ namespace osu.Game.Rulesets.Mania.UI private List normalColumnColours = new List(); private Color4 specialColumnColour; + public int ColumnStartIndex; + public ManiaStage() : base(ScrollingDirection.Up) { @@ -160,8 +164,18 @@ namespace osu.Game.Rulesets.Mania.UI }; } - public void AddJudgement(Judgement judgement) + public override void Add(DrawableHitObject h) { + int index = ((ManiaHitObject)h.HitObject).Column - ColumnStartIndex; + Columns.ElementAt(index).Add(h); + } + + public void AddJudgement(DrawableHitObject judgedObject, Judgement judgement) + { + var maniaObject = (ManiaHitObject)judgedObject.HitObject; + int column = maniaObject.Column - ColumnStartIndex; + columns[column].OnJudgement(judgedObject, judgement); + judgements.Clear(); judgements.Add(new DrawableManiaJudgement(judgement) {