From d1f686b1a8ee3565ff9f6f6b9962ba5344acd262 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 16:38:58 +0900 Subject: [PATCH 01/20] Fix DrawableTaikoHitObject origins. --- osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs index c14dc6d7b0..609fac70ea 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs @@ -22,7 +22,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable : base(hitObject) { Anchor = Anchor.CentreLeft; - Origin = Anchor.Centre; + Origin = Anchor.CentreLeft; RelativePositionAxes = Axes.X; } From 1615db386a8eff9204b217f4cbe4bf81f834ec1d Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 16:47:13 +0900 Subject: [PATCH 02/20] Give DrumRoll some sane velocity/tickdistance defaults. --- osu.Game.Modes.Taiko/Objects/DrumRoll.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs index 1f9241268b..7dba605213 100644 --- a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs @@ -25,13 +25,13 @@ namespace osu.Game.Modes.Taiko.Objects /// /// Velocity of the drum roll in positional length units per millisecond. /// - public double Velocity { get; protected set; } + public double Velocity { get; protected set; } = 5; /// /// The distance between ticks of this drumroll. /// Half of this value is the hit window of the ticks. /// - public double TickTimeDistance { get; protected set; } + public double TickTimeDistance { get; protected set; } = 200; /// /// Number of drum roll ticks required for a "Good" hit. From 1220972170a98eeaec35213b11f4dd2f8dffff4b Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 16:47:25 +0900 Subject: [PATCH 03/20] Fix ticks not being passed IsStrong. --- osu.Game.Modes.Taiko/Objects/DrumRoll.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs index 7dba605213..ff73c40d2f 100644 --- a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs @@ -88,6 +88,7 @@ namespace osu.Game.Modes.Taiko.Objects PreEmpt = PreEmpt, TickTimeDistance = TickTimeDistance, StartTime = t, + IsStrong = IsStrong, Sample = new HitSampleInfo { Type = SampleType.None, From 2e8607687c1dccb4cb23c6675193769fff947401 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 16:49:39 +0900 Subject: [PATCH 04/20] Implement DrumRollTick drawing. --- .../Objects/Drawable/DrawableDrumRollTick.cs | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs index 1e270c6751..da460e5cfc 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs @@ -5,20 +5,67 @@ using OpenTK.Input; using osu.Game.Modes.Taiko.Judgements; using System; using osu.Game.Modes.Objects.Drawables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using OpenTK; +using OpenTK.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Transforms; namespace osu.Game.Modes.Taiko.Objects.Drawable { public class DrawableDrumRollTick : DrawableTaikoHitObject { + /// + /// The size of a tick. + /// + private const float tick_size = 24; + + /// + /// Any tick that is not the first is not filled, but is displayed + /// as a circle instead. This is what controls the stroke width of that circle. + /// + private const float tick_border_width = 6; + private readonly DrumRollTick tick; + private readonly CircularContainer bodyContainer; + public DrawableDrumRollTick(DrumRollTick tick) : base(tick) { this.tick = tick; + + Anchor = Anchor.CentreLeft; + Origin = Anchor.Centre; + + RelativePositionAxes = Axes.X; + Size = new Vector2(tick_size); + + Children = new[] + { + bodyContainer = new CircularContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + Masking = true, + BorderThickness = tick_border_width, + BorderColour = Color4.White, + Children = new[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = tick.FirstTick ? 1 : 0, + AlwaysPresent = true + } + } + } + }; } - protected override TaikoJudgement CreateJudgement() => new TaikoDrumRollTickJudgement(); + protected override TaikoJudgement CreateJudgement() => new TaikoDrumRollTickJudgement { SecondHit = tick.IsStrong }; protected override void CheckJudgement(bool userTriggered) { @@ -38,11 +85,17 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable protected override void UpdateState(ArmedState state) { + switch (state) + { + case ArmedState.Hit: + bodyContainer.ScaleTo(0, 100, EasingTypes.OutQuint); + break; + } } protected override void UpdateScrollPosition(double time) { - // Drum roll ticks shouldn't move + // Ticks don't move } protected override bool HandleKeyPress(Key key) From 6b1dab5b834dad53f8c71d7f67c9efbf4e966789 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 16:50:06 +0900 Subject: [PATCH 05/20] Implement drawable drumroll. --- .../Tests/TestCaseTaikoPlayfield.cs | 18 ++++++++++++ .../Objects/Drawable/DrawableDrumRoll.cs | 22 +++++++++------ .../Drawable/DrawableStrongDrumRoll.cs | 20 +++++++++++++ .../Drawable/Pieces/DrumRollCirclePiece.cs | 28 +++++++++++++++++++ .../osu.Game.Modes.Taiko.csproj | 4 ++- 5 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 osu.Game.Modes.Taiko/Objects/Drawable/DrawableStrongDrumRoll.cs create mode 100644 osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs index 395a0cab13..ef9c3006f1 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs @@ -6,6 +6,7 @@ using osu.Framework.Screens.Testing; using osu.Game.Modes.Objects.Drawables; using osu.Game.Modes.Taiko.Judgements; using osu.Game.Modes.Taiko.Objects; +using osu.Game.Modes.Taiko.Objects.Drawable; using osu.Game.Modes.Taiko.UI; namespace osu.Desktop.VisualTests.Tests @@ -22,6 +23,8 @@ namespace osu.Desktop.VisualTests.Tests AddButton("Hit!", addHitJudgement); AddButton("Miss :(", addMissJudgement); + AddButton("DrumRoll", () => addDrumRoll(false)); + AddButton("Strong DrumRoll", () => addDrumRoll(true)); Add(playfield = new TaikoPlayfield { @@ -60,6 +63,21 @@ namespace osu.Desktop.VisualTests.Tests }); } + private void addDrumRoll(bool strong) + { + var d = new DrumRoll + { + StartTime = Time.Current + 1000, + Distance = 2000, + PreEmpt = 1000, + }; + + if (strong) + playfield.Add(new DrawableStrongDrumRoll(d)); + else + playfield.Add(new DrawableDrumRoll(d)); + } + private class DrawableTestHit : DrawableHitObject { public DrawableTestHit(TaikoHitObject hitObject) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index 3551538fe7..7915599c3e 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -1,8 +1,10 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using osu.Framework.Graphics; using osu.Game.Modes.Objects.Drawables; using osu.Game.Modes.Taiko.Judgements; +using osu.Game.Modes.Taiko.Objects.Drawable.Pieces; using System.Linq; namespace osu.Game.Modes.Taiko.Objects.Drawable @@ -16,25 +18,23 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable { this.drumRoll = drumRoll; - int tickIndex = 0; + RelativeSizeAxes = Axes.X; + Width = (float)(drumRoll.Duration / drumRoll.PreEmpt); + + Add(new DrumRollCirclePiece(CreateCirclePiece())); + foreach (var tick in drumRoll.Ticks) { var newTick = new DrawableDrumRollTick(tick) { - Depth = tickIndex, X = (float)((tick.StartTime - HitObject.StartTime) / drumRoll.Duration) }; AddNested(newTick); - - tickIndex++; + Add(newTick); } } - protected override void UpdateState(ArmedState state) - { - } - protected override void CheckJudgement(bool userTriggered) { if (userTriggered) @@ -53,5 +53,11 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable else Judgement.Result = HitResult.Miss; } + + protected override void UpdateState(ArmedState state) + { + } + + protected virtual CirclePiece CreateCirclePiece() => new CirclePiece(); } } diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableStrongDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableStrongDrumRoll.cs new file mode 100644 index 0000000000..e9723a0162 --- /dev/null +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableStrongDrumRoll.cs @@ -0,0 +1,20 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using osu.Game.Modes.Taiko.Judgements; +using osu.Game.Modes.Taiko.Objects.Drawable.Pieces; + +namespace osu.Game.Modes.Taiko.Objects.Drawable +{ + public class DrawableStrongDrumRoll : DrawableDrumRoll + { + public DrawableStrongDrumRoll(DrumRoll drumRoll) + : base(drumRoll) + { + } + + protected override TaikoJudgement CreateJudgement() => new TaikoJudgement { SecondHit = true }; + + protected override CirclePiece CreateCirclePiece() => new StrongCirclePiece(); + } +} diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs new file mode 100644 index 0000000000..d462f4eeb8 --- /dev/null +++ b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs @@ -0,0 +1,28 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; + +namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces +{ + public class DrumRollCirclePiece : Container + { + private readonly CirclePiece circle; + + public DrumRollCirclePiece(CirclePiece piece) + { + RelativeSizeAxes = Axes.X; + + Add(circle = piece); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + circle.AccentColour = colours.YellowDark; + } + } +} diff --git a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj index d2aecc8d2e..3e26bf7ef2 100644 --- a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj +++ b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj @@ -53,11 +53,13 @@ + + @@ -102,4 +104,4 @@ --> - + \ No newline at end of file From 6f66558e299e14091321ee2b167289caef8d7276 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 17:10:01 +0900 Subject: [PATCH 06/20] Use relative size for ticks. --- osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs index da460e5cfc..74ffc59548 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs @@ -19,13 +19,13 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable /// /// The size of a tick. /// - private const float tick_size = 24; + private const float tick_size = TaikoHitObject.CIRCLE_RADIUS / 2; /// /// Any tick that is not the first is not filled, but is displayed /// as a circle instead. This is what controls the stroke width of that circle. /// - private const float tick_border_width = 6; + private const float tick_border_width = tick_size / 4; private readonly DrumRollTick tick; From 79764603d7b2102a414ada8e160c871f4b105856 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 17:18:58 +0900 Subject: [PATCH 07/20] Adjust comment. --- osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs index 74ffc59548..b6a20bab8d 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs @@ -22,8 +22,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable private const float tick_size = TaikoHitObject.CIRCLE_RADIUS / 2; /// - /// Any tick that is not the first is not filled, but is displayed - /// as a circle instead. This is what controls the stroke width of that circle. + /// Any tick that is not the first for a drumroll is not filled, but is instead displayed + /// as a hollow circle. This is what controls the border width of that circle. /// private const float tick_border_width = tick_size / 4; From 2ff213d2c8f47b37b0420704cdef00aad2a1cf06 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 17:19:27 +0900 Subject: [PATCH 08/20] Fix resharper warning. --- osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs index ef9c3006f1..a318ec570f 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs @@ -72,10 +72,7 @@ namespace osu.Desktop.VisualTests.Tests PreEmpt = 1000, }; - if (strong) - playfield.Add(new DrawableStrongDrumRoll(d)); - else - playfield.Add(new DrawableDrumRoll(d)); + playfield.Add(strong ? new DrawableStrongDrumRoll(d) : new DrawableDrumRoll(d)); } private class DrawableTestHit : DrawableHitObject From c14759ebadd04d933f013b3c246ba593d993444b Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 17:24:14 +0900 Subject: [PATCH 09/20] Use new circle piece in test case. --- .../Tests/TestCaseTaikoHitObjects.cs | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs index 0204058b8a..5e8d28e192 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs @@ -78,21 +78,21 @@ namespace osu.Desktop.VisualTests.Tests Position = new Vector2(350, 500) }); - Add(new DrumRollCircle(new CirclePiece() + Add(new DrumRollCirclePiece(new CirclePiece { KiaiMode = kiai }) { - Width = 250, + Width = 0.25f, Position = new Vector2(575, 100) }); - Add(new DrumRollCircle(new StrongCirclePiece() + Add(new DrumRollCirclePiece(new StrongCirclePiece { KiaiMode = kiai }) { - Width = 250, + Width = 0.25f, Position = new Vector2(575, 300) }); } @@ -119,20 +119,6 @@ namespace osu.Desktop.VisualTests.Tests } } - private class DrumRollCircle : BaseCircle - { - public DrumRollCircle(CirclePiece piece) - : base(piece) - { - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - Piece.AccentColour = colours.YellowDark; - } - } - private class CentreHitCircle : BaseCircle { public CentreHitCircle(CirclePiece piece) From 714c280531bad47c8b93c220c609db155a746f49 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Tue, 28 Mar 2017 17:26:30 +0900 Subject: [PATCH 10/20] One more xmldoc. --- .../Objects/Drawable/Pieces/DrumRollCirclePiece.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs index d462f4eeb8..076ac5d03a 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs @@ -8,6 +8,9 @@ using osu.Game.Graphics; namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces { + /// + /// A circle piece used for drumrolls. + /// public class DrumRollCirclePiece : Container { private readonly CirclePiece circle; From 2a018e708de0879934c118cef37130923cc9a00b Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Wed, 29 Mar 2017 09:36:07 +0900 Subject: [PATCH 11/20] Better life time end. --- .../Objects/Drawable/DrawableDrumRoll.cs | 11 +++++++++++ .../Objects/Drawable/DrawableTaikoHitObject.cs | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index 7915599c3e..b599fea57d 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -35,6 +35,17 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable } } + protected override void LoadComplete() + { + base.LoadComplete(); + + // This is naive, however it's based on the reasoning that the hit target + // is further than mid point of the play field, so the time taken to scroll in should always + // be greater than the time taken to scroll out to the left of the screen. + // Thus, using PreEmpt here is enough for the drum roll to completely scroll out. + LifetimeEnd = drumRoll.EndTime + drumRoll.PreEmpt; + } + protected override void CheckJudgement(bool userTriggered) { if (userTriggered) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs index 609fac70ea..8da05d8bed 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHitObject.cs @@ -30,7 +30,6 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable protected override void LoadComplete() { LifetimeStart = HitObject.StartTime - HitObject.PreEmpt * 2; - LifetimeEnd = HitObject.StartTime + HitObject.PreEmpt; base.LoadComplete(); } From 1b291ec1a1d1db0b95f8e12006dcfc6a394a982a Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Wed, 29 Mar 2017 09:38:24 +0900 Subject: [PATCH 12/20] Make drumroll body colour depending on completion. --- .../Objects/Drawable/DrawableDrumRoll.cs | 12 +++++++- .../Objects/Drawable/Pieces/CirclePiece.cs | 6 ++-- .../Drawable/Pieces/DrumRollCirclePiece.cs | 28 ++++++++++++++++++- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index b599fea57d..f1e2ecef7e 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -13,6 +13,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable { private readonly DrumRoll drumRoll; + private readonly DrumRollCirclePiece circle; + public DrawableDrumRoll(DrumRoll drumRoll) : base(drumRoll) { @@ -21,7 +23,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable RelativeSizeAxes = Axes.X; Width = (float)(drumRoll.Duration / drumRoll.PreEmpt); - Add(new DrumRollCirclePiece(CreateCirclePiece())); + Add(circle = new DrumRollCirclePiece(CreateCirclePiece())); foreach (var tick in drumRoll.Ticks) { @@ -30,11 +32,19 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable X = (float)((tick.StartTime - HitObject.StartTime) / drumRoll.Duration) }; + newTick.OnJudgement += onTickJudgement; + AddNested(newTick); Add(newTick); } } + private void onTickJudgement(DrawableHitObject obj) + { + int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit); + circle.Completion = (float)countHit / NestedHitObjects.Count(); + } + protected override void LoadComplete() { base.LoadComplete(); diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs index ec98feddae..2af469d05f 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs @@ -36,9 +36,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces accentColour = value; innerBackground.Colour = AccentColour; - - triangles.ColourLight = AccentColour; - triangles.ColourDark = AccentColour.Darken(0.1f); + triangles.Colour = AccentColour; resetEdgeEffects(); } @@ -107,6 +105,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, + ColourLight = Color4.White, + ColourDark = Color4.White.Darken(0.1f) } } }, diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs index 076ac5d03a..3be99ab161 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs @@ -1,9 +1,12 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using OpenTK; +using OpenTK.Graphics; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.MathUtils; using osu.Game.Graphics; namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces @@ -13,8 +16,30 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces /// public class DrumRollCirclePiece : Container { + private float completion; + /// + /// The amount of the drumroll that has been completed, as a percentage of the number + /// of ticks in the drumroll. This determines the internal colour of the drumroll. + /// + public float Completion + { + get { return completion; } + set + { + completion = MathHelper.Clamp(value, 0, 1); + + if (!IsLoaded) + return; + + circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1); + } + } + private readonly CirclePiece circle; + private Color4 baseColour; + private Color4 finalColour; + public DrumRollCirclePiece(CirclePiece piece) { RelativeSizeAxes = Axes.X; @@ -25,7 +50,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces [BackgroundDependencyLoader] private void load(OsuColour colours) { - circle.AccentColour = colours.YellowDark; + circle.AccentColour = baseColour = colours.YellowDark; + finalColour = colours.YellowDarker; } } } From b10f9512ada9251e5e04926221fa336674b0a01f Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Wed, 29 Mar 2017 11:40:13 +0900 Subject: [PATCH 13/20] Remove unused using. --- osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs index b6a20bab8d..11a4b56930 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRollTick.cs @@ -10,7 +10,6 @@ using osu.Framework.Graphics.Containers; using OpenTK; using OpenTK.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Transforms; namespace osu.Game.Modes.Taiko.Objects.Drawable { From 71baf916d159634f6af4c741c3dd491eb8a64365 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Thu, 30 Mar 2017 14:15:42 +0900 Subject: [PATCH 14/20] Fix post-merge errors. --- .../Tests/TestCaseTaikoHitObjects.cs | 60 ------------------- 1 file changed, 60 deletions(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs index 4b6302b489..cd79beadb1 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs @@ -133,66 +133,6 @@ namespace osu.Desktop.VisualTests.Tests } } - private class CentreHitCircle : BaseCircle - { - public CentreHitCircle(CirclePiece piece) - : base(piece) - { - Piece.Add(new CircularContainer - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(SYMBOL_INNER_SIZE), - Masking = true, - Children = new[] - { - new Box - { - RelativeSizeAxes = Axes.Both - } - } - }); - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - Piece.AccentColour = colours.PinkDarker; - } - } - - private class RimHitCircle : BaseCircle - { - public RimHitCircle(CirclePiece piece) - : base(piece) - { - Piece.Add(new CircularContainer - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(SYMBOL_SIZE), - BorderThickness = SYMBOL_BORDER, - BorderColour = Color4.White, - Masking = true, - Children = new[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Alpha = 0, - AlwaysPresent = true - } - } - }); - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - Piece.AccentColour = colours.BlueDarker; - } - } - private abstract class BaseCircle : Container { protected readonly CirclePiece Piece; From 41aaf42183a1780992990f5c75800a0c7ffd9057 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Thu, 30 Mar 2017 18:59:00 +0900 Subject: [PATCH 15/20] Remove DrumRollCirclePiece, cleanup CirclePiece a bit. --- .../Tests/TestCaseTaikoHitObjects.cs | 18 +++--- .../Objects/Drawable/DrawableDrumRoll.cs | 26 +++++++-- .../Objects/Drawable/Pieces/CirclePiece.cs | 17 +++--- .../Drawable/Pieces/DrumRollCirclePiece.cs | 57 ------------------- .../osu.Game.Modes.Taiko.csproj | 1 - 5 files changed, 36 insertions(+), 83 deletions(-) delete mode 100644 osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs index cd79beadb1..ce395fd492 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs @@ -92,22 +92,20 @@ namespace osu.Desktop.VisualTests.Tests Position = new Vector2(350, 500) }); - Add(new DrumRollCirclePiece(new CirclePiece - { - KiaiMode = kiai - }) + Add(new CirclePiece { + Position = new Vector2(575, 100), Width = 0.25f, - Position = new Vector2(575, 100) + AccentColour = Color4.Orange, + KiaiMode = kiai, }); - Add(new DrumRollCirclePiece(new StrongCirclePiece - { - KiaiMode = kiai - }) + Add(new StrongCirclePiece { + Position = new Vector2(575, 300), Width = 0.25f, - Position = new Vector2(575, 300) + AccentColour = Color4.Orange, + KiaiMode = kiai }); } diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index f1e2ecef7e..f50cab33b0 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -1,7 +1,11 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using OpenTK.Graphics; +using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.MathUtils; +using osu.Game.Graphics; using osu.Game.Modes.Objects.Drawables; using osu.Game.Modes.Taiko.Judgements; using osu.Game.Modes.Taiko.Objects.Drawable.Pieces; @@ -13,7 +17,10 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable { private readonly DrumRoll drumRoll; - private readonly DrumRollCirclePiece circle; + private readonly CirclePiece circle; + + private Color4 baseColour; + private Color4 finalColour; public DrawableDrumRoll(DrumRoll drumRoll) : base(drumRoll) @@ -23,7 +30,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable RelativeSizeAxes = Axes.X; Width = (float)(drumRoll.Duration / drumRoll.PreEmpt); - Add(circle = new DrumRollCirclePiece(CreateCirclePiece())); + Add(circle = CreateCirclePiece()); foreach (var tick in drumRoll.Ticks) { @@ -39,10 +46,11 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable } } - private void onTickJudgement(DrawableHitObject obj) + [BackgroundDependencyLoader] + private void load(OsuColour colours) { - int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit); - circle.Completion = (float)countHit / NestedHitObjects.Count(); + circle.Background.Colour = baseColour = colours.YellowDark; + finalColour = colours.YellowDarker; } protected override void LoadComplete() @@ -56,6 +64,14 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable LifetimeEnd = drumRoll.EndTime + drumRoll.PreEmpt; } + private void onTickJudgement(DrawableHitObject obj) + { + int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit); + float completion = (float)countHit / NestedHitObjects.Count(); + + circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1); + } + protected override void CheckJudgement(bool userTriggered) { if (userTriggered) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs index 2af469d05f..59eebce28e 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/CirclePiece.cs @@ -35,8 +35,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces { accentColour = value; - innerBackground.Colour = AccentColour; - triangles.Colour = AccentColour; + background.Colour = AccentColour; resetEdgeEffects(); } @@ -66,10 +65,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces protected override Container Content => SymbolContainer; protected readonly Container SymbolContainer; + private readonly Container background; private readonly Container innerLayer; - private readonly Container innerCircleContainer; - private readonly Box innerBackground; - private readonly Triangles triangles; public CirclePiece() { @@ -85,22 +82,22 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces RelativeSizeAxes = Axes.Y, Children = new Framework.Graphics.Drawable[] { - innerCircleContainer = new CircularContainer + background = new CircularContainer { - Name = "Inner Circle", + Name = "Background", Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, Masking = true, Children = new Framework.Graphics.Drawable[] { - innerBackground = new Box + new Box { Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, }, - triangles = new Triangles + new Triangles { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -149,7 +146,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces private void resetEdgeEffects() { - innerCircleContainer.EdgeEffect = new EdgeEffect + background.EdgeEffect = new EdgeEffect { Type = EdgeEffectType.Glow, Colour = AccentColour, diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs b/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs deleted file mode 100644 index 3be99ab161..0000000000 --- a/osu.Game.Modes.Taiko/Objects/Drawable/Pieces/DrumRollCirclePiece.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) 2007-2017 ppy Pty Ltd . -// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -using OpenTK; -using OpenTK.Graphics; -using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; -using osu.Game.Graphics; - -namespace osu.Game.Modes.Taiko.Objects.Drawable.Pieces -{ - /// - /// A circle piece used for drumrolls. - /// - public class DrumRollCirclePiece : Container - { - private float completion; - /// - /// The amount of the drumroll that has been completed, as a percentage of the number - /// of ticks in the drumroll. This determines the internal colour of the drumroll. - /// - public float Completion - { - get { return completion; } - set - { - completion = MathHelper.Clamp(value, 0, 1); - - if (!IsLoaded) - return; - - circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1); - } - } - - private readonly CirclePiece circle; - - private Color4 baseColour; - private Color4 finalColour; - - public DrumRollCirclePiece(CirclePiece piece) - { - RelativeSizeAxes = Axes.X; - - Add(circle = piece); - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - circle.AccentColour = baseColour = colours.YellowDark; - finalColour = colours.YellowDarker; - } - } -} diff --git a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj index 8865e65228..232d108f57 100644 --- a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj +++ b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj @@ -64,7 +64,6 @@ - From 0e2f72542507f2fcd0214c88f805407614fad16e Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 31 Mar 2017 11:41:06 +0900 Subject: [PATCH 16/20] Fade the accent colour instead of stepping. --- .../Tests/TestCaseTaikoPlayfield.cs | 2 +- .../Objects/Drawable/DrawableDrumRoll.cs | 29 ++++++++++++++----- osu.Game.Modes.Taiko/Objects/DrumRoll.cs | 2 +- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs index 56d41027f6..e7702bc032 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs @@ -81,7 +81,7 @@ namespace osu.Desktop.VisualTests.Tests var d = new DrumRoll { StartTime = Time.Current + 1000, - Distance = 2000, + Distance = 20000, PreEmpt = 1000, }; diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index f50cab33b0..6b1c4f546b 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -1,6 +1,7 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using OpenTK; using OpenTK.Graphics; using osu.Framework.Allocation; using osu.Framework.Graphics; @@ -15,12 +16,21 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable { public class DrawableDrumRoll : DrawableTaikoHitObject { + /// + /// Number of consecutive hits required to reach the dark/final accent colour. + /// + private const int consecutive_hits_for_dark_accent = 5; + private readonly DrumRoll drumRoll; private readonly CirclePiece circle; - private Color4 baseColour; - private Color4 finalColour; + private Color4 accentDarkColour; + + /// + /// Number of consecutive tick hits. + /// + private int consecutiveHits; public DrawableDrumRoll(DrumRoll drumRoll) : base(drumRoll) @@ -49,8 +59,8 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable [BackgroundDependencyLoader] private void load(OsuColour colours) { - circle.Background.Colour = baseColour = colours.YellowDark; - finalColour = colours.YellowDarker; + circle.AccentColour = AccentColour = colours.YellowDark; + accentDarkColour = colours.YellowDarker; } protected override void LoadComplete() @@ -66,10 +76,15 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable private void onTickJudgement(DrawableHitObject obj) { - int countHit = NestedHitObjects.Count(o => o.Judgement.Result == HitResult.Hit); - float completion = (float)countHit / NestedHitObjects.Count(); + if (obj.Judgement.Result == HitResult.Hit) + consecutiveHits++; + else + consecutiveHits--; - circle.AccentColour = Interpolation.ValueAt(completion, baseColour, finalColour, 0, 1); + consecutiveHits = MathHelper.Clamp(consecutiveHits, 0, consecutive_hits_for_dark_accent); + + Color4 newAccent = Interpolation.ValueAt((float)consecutiveHits / consecutive_hits_for_dark_accent, AccentColour, accentDarkColour, 0, 1); + circle.FadeAccent(newAccent, 100); } protected override void CheckJudgement(bool userTriggered) diff --git a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs index ff73c40d2f..df8870ab97 100644 --- a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs @@ -31,7 +31,7 @@ namespace osu.Game.Modes.Taiko.Objects /// The distance between ticks of this drumroll. /// Half of this value is the hit window of the ticks. /// - public double TickTimeDistance { get; protected set; } = 200; + public double TickTimeDistance { get; protected set; } = 100; /// /// Number of drum roll ticks required for a "Good" hit. From 782c6bf28ecb12d12be14706623fcaa9b469bd08 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Apr 2017 16:07:54 +0900 Subject: [PATCH 17/20] Remove unnecessary usings. --- osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs | 2 -- osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs | 1 - 2 files changed, 3 deletions(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs index 664c0bf30a..2557875c84 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs @@ -3,10 +3,8 @@ using OpenTK; using OpenTK.Graphics; -using osu.Framework.Allocation; using osu.Framework.Graphics.Containers; using osu.Framework.Testing; -using osu.Game.Graphics; using osu.Game.Modes.Taiko.Objects.Drawable.Pieces; namespace osu.Desktop.VisualTests.Tests diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs index 4cc959215f..74f59f3fdb 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs @@ -3,7 +3,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Primitives; using osu.Framework.MathUtils; using osu.Framework.Testing; using osu.Game.Modes.Objects.Drawables; From d1e3bbb5f42c4b2d2d7105ee5a42529be71048ec Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Apr 2017 16:12:27 +0900 Subject: [PATCH 18/20] Don't call Reset() from within TestCaseTaikoHitObjects. --- osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs index 2557875c84..7aeb75ef8d 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs @@ -1,6 +1,7 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System.Linq; using OpenTK; using OpenTK.Graphics; using osu.Framework.Graphics.Containers; @@ -22,7 +23,7 @@ namespace osu.Desktop.VisualTests.Tests AddToggleStep("Kiai", b => { kiai = !kiai; - Reset(); + updateKiaiState(); }); Add(new CirclePiece @@ -102,6 +103,12 @@ namespace osu.Desktop.VisualTests.Tests }); } + private void updateKiaiState() + { + foreach (var c in Children.OfType()) + c.KiaiMode = kiai; + } + private abstract class BaseCircle : Container { protected readonly CirclePiece Piece; From b5ef0ae0d8a2e37256bc41f665d154e87902e130 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Sat, 1 Apr 2017 16:32:31 +0900 Subject: [PATCH 19/20] consecutiveHits -> rollingHits. --- .../Objects/Drawable/DrawableDrumRoll.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index 6b1c4f546b..9374864003 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -17,9 +17,9 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable public class DrawableDrumRoll : DrawableTaikoHitObject { /// - /// Number of consecutive hits required to reach the dark/final accent colour. + /// Number of rolling hits required to reach the dark/final accent colour. /// - private const int consecutive_hits_for_dark_accent = 5; + private const int rolling_hits_for_dark_accent = 5; private readonly DrumRoll drumRoll; @@ -28,9 +28,9 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable private Color4 accentDarkColour; /// - /// Number of consecutive tick hits. + /// Rolling number of tick hits. This increases for hits and increases for misses. /// - private int consecutiveHits; + private int rollingHits; public DrawableDrumRoll(DrumRoll drumRoll) : base(drumRoll) @@ -77,13 +77,13 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable private void onTickJudgement(DrawableHitObject obj) { if (obj.Judgement.Result == HitResult.Hit) - consecutiveHits++; + rollingHits++; else - consecutiveHits--; + rollingHits--; - consecutiveHits = MathHelper.Clamp(consecutiveHits, 0, consecutive_hits_for_dark_accent); + rollingHits = MathHelper.Clamp(rollingHits, 0, rolling_hits_for_dark_accent); - Color4 newAccent = Interpolation.ValueAt((float)consecutiveHits / consecutive_hits_for_dark_accent, AccentColour, accentDarkColour, 0, 1); + Color4 newAccent = Interpolation.ValueAt((float)rollingHits / rolling_hits_for_dark_accent, AccentColour, accentDarkColour, 0, 1); circle.FadeAccent(newAccent, 100); } From efb589cc089b7ea87bfda2865427f12536229aa4 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Sat, 1 Apr 2017 16:34:30 +0900 Subject: [PATCH 20/20] (de)creases for misses. --- osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs index 9374864003..4697625c5e 100644 --- a/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableDrumRoll.cs @@ -28,7 +28,7 @@ namespace osu.Game.Modes.Taiko.Objects.Drawable private Color4 accentDarkColour; /// - /// Rolling number of tick hits. This increases for hits and increases for misses. + /// Rolling number of tick hits. This increases for hits and decreases for misses. /// private int rollingHits;