From 94460efefafea804d97d9266b568646f3cf19536 Mon Sep 17 00:00:00 2001 From: andy840119 Date: Sat, 19 Feb 2022 15:37:34 +0800 Subject: [PATCH] add tickle effect in the adjust time-tag mode. --- .../RecordingTimeTags/RecordingTimeTagPart.cs | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Rows/Extends/RecordingTimeTags/RecordingTimeTagPart.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Rows/Extends/RecordingTimeTags/RecordingTimeTagPart.cs index 33995109b..84daa2ac5 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Rows/Extends/RecordingTimeTags/RecordingTimeTagPart.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Rows/Extends/RecordingTimeTags/RecordingTimeTagPart.cs @@ -22,6 +22,7 @@ using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; using osuTK; +using osuTK.Graphics; namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Rows.Extends.RecordingTimeTags { @@ -122,7 +123,7 @@ private class RecordingTimeTagVisualization : CompositeDrawable, IHasCustomToolt private readonly Bindable bindableTime; - private readonly RightTriangle timeTagTriangle; + private readonly TimeTagPiece timeTagPiece; private readonly Lyric lyric; private readonly TimeTag timeTag; @@ -141,7 +142,7 @@ public RecordingTimeTagVisualization(Lyric lyric, TimeTag timeTag) bindableTime = timeTag.TimeBindable.GetBoundCopy(); InternalChildren = new Drawable[] { - timeTagTriangle = new RightTriangle + timeTagPiece = new TimeTagPiece { Name = "Time tag triangle", Anchor = Anchor.Centre, @@ -159,9 +160,10 @@ public RecordingTimeTagVisualization(Lyric lyric, TimeTag timeTag) } [BackgroundDependencyLoader] - private void load(OsuColour colours, RecordingTimeTagEditor timeline) + private void load(EditorClock clock, OsuColour colours, RecordingTimeTagEditor timeline) { - timeTagTriangle.Colour = colours.GetTimeTagColour(timeTag); + timeTagPiece.Clock = clock; + timeTagPiece.Colour = colours.GetTimeTagColour(timeTag); bindableTime.BindValueChanged(e => { @@ -171,7 +173,23 @@ private void load(OsuColour colours, RecordingTimeTagEditor timeline) if (!hasValue) return; - X = (float)timeline.GetPreviewTime(timeTag); + // should wait until all time-tag time has been modified. + Schedule(() => + { + double previewTime = timeline.GetPreviewTime(timeTag); + + // adjust position. + X = (float)previewTime; + + // make tickle effect. + timeTagPiece.ClearTransforms(); + + using (timeTagPiece.BeginAbsoluteSequence(previewTime)) + { + timeTagPiece.Colour = colours.GetTimeTagColour(timeTag); + timeTagPiece.FlashColour(colours.RedDark, 750, Easing.OutQuint); + } + }); }, true); } @@ -200,5 +218,10 @@ protected override bool OnClick(ClickEvent e) }) }; } + + private class TimeTagPiece : RightTriangle + { + public override bool RemoveCompletedTransforms => false; + } } }