diff --git a/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneImportLyric.cs b/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneImportLyric.cs index 367030dd9..79d681aa7 100644 --- a/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneImportLyric.cs +++ b/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneImportLyric.cs @@ -13,7 +13,9 @@ using osu.Game.Rulesets.Karaoke.Tests.Resources; using osu.Game.Screens.Edit; using osu.Game.Tests.Visual; +using System; using System.IO; +using System.Linq; namespace osu.Game.Rulesets.Karaoke.Tests.Edit { @@ -27,7 +29,7 @@ public class TestSceneImportLyric : EditorClockTestScene protected override Container Content { get; } = new Container { RelativeSizeAxes = Axes.Both }; private DialogOverlay dialogOverlay; - private ImportLyricScreen screen; + private TestImportLyricScreen screen; private ImportLyricManager importManager; public TestSceneImportLyric() @@ -53,11 +55,43 @@ private void load() Dependencies.Cache(importManager); } - [SetUp] - public void SetUp() => Schedule(() => + [Test] + public void TestGoToStep() => Schedule(() => { var temp = TestResources.GetTestLrcForImport("default"); - Child = screen = new ImportLyricScreen(new FileInfo(temp)); + Child = screen = new TestImportLyricScreen(new FileInfo(temp)); + + var steps = (ImportLyricStep[])Enum.GetValues(typeof(ImportLyricStep)); + foreach (var step in steps) + { + AddStep($"go to step {Enum.GetName(typeof(ImportLyricStep), step)}", () => { screen.GoToStep(step); }); + } }); + + private class TestImportLyricScreen : ImportLyricScreen + { + public TestImportLyricScreen(FileInfo fileInfo) + : base(fileInfo) + { + } + + public void GoToStep(ImportLyricStep step) + { + if (ScreenStack.CurrentScreen is IImportLyricSubScreen lyricSubScreen) + { + if (step == lyricSubScreen.Step) + return; + + if (step <= lyricSubScreen.Step) + return; + + var totalSteps = ((ImportLyricStep[])Enum.GetValues(typeof(ImportLyricStep))).Where(x => x > lyricSubScreen.Step && x <= step); + foreach (var gotoStep in totalSteps) + { + ScreenStack.Push(gotoStep); + } + } + } + } } } diff --git a/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneLyricEditorScreen.cs b/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneLyricEditorScreen.cs index c7bd4d1b5..a41498246 100644 --- a/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneLyricEditorScreen.cs +++ b/osu.Game.Rulesets.Karaoke.Tests/Edit/TestSceneLyricEditorScreen.cs @@ -10,12 +10,12 @@ using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Karaoke.Beatmaps.Formats; using osu.Game.Rulesets.Karaoke.Edit.ImportLyric; -using osu.Game.Rulesets.Karaoke.Edit.LyricEditor; using osu.Game.Rulesets.Karaoke.Tests.Beatmaps; using osu.Game.Rulesets.Karaoke.Tests.Resources; using osu.Game.Screens.Edit; using osu.Game.Tests.Visual; using System.IO; +using osu.Game.Rulesets.Karaoke.Edit.Lyrics; namespace osu.Game.Rulesets.Karaoke.Tests.Edit { diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/AssignLanguageSubScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/AssignLanguageSubScreen.cs index f3261ac32..0d92d3e0b 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/AssignLanguageSubScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/AssignLanguageSubScreen.cs @@ -1,11 +1,15 @@ // Copyright (c) andy840119 . Licensed under the GPL Licence. // See the LICENCE file in the repository root for full licence text. +using osu.Framework.Allocation; +using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Framework.Timing; +using osu.Game.Rulesets.Karaoke.Edit.Lyrics; namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric.AssignLanguage { - public class AssignLanguageSubScreen : ImportLyricSubScreen + public class AssignLanguageSubScreen : ImportLyricSubScreenWithTopNavigation { public override string Title => "Language"; @@ -15,9 +19,77 @@ public class AssignLanguageSubScreen : ImportLyricSubScreen public override IconUsage Icon => FontAwesome.Solid.Globe; + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + { + var dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + var clock = new DecoupleableInterpolatingFramedClock { IsCoupled = false }; + dependencies.CacheAs(clock); + dependencies.CacheAs(clock); + + return dependencies; + } + + protected override TopNavigation CreateNavigation() + => new AssignLanguageNavigation(this); + + protected override Drawable CreateContent() + { + return new LyricEditor + { + RelativeSizeAxes = Axes.Both, + Mode = Mode.EditMode, + LyricFastEditMode = LyricFastEditMode.Language, + FontSize = 26 + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Navigation.State = NavigationState.Initial; + AskForAutoAssignLanguage(); + } + public override void Complete() { ScreenStack.Push(ImportLyricStep.GenerateRuby); } + + protected void AskForAutoAssignLanguage() + { + DialogOverlay.Push(new UseLanguageDetectorPopupDialog(ok => + { + // todo : call manager to do that. + })); + } + + public class AssignLanguageNavigation : TopNavigation + { + public AssignLanguageNavigation(ImportLyricSubScreen screen) + : base(screen) + { + } + + protected override void UpdateState(NavigationState value) + { + base.UpdateState(value); + + switch (value) + { + case NavigationState.Initial: + NavigationText = "Try to select left side to mark lyric's language."; + break; + case NavigationState.Working: + NavigationText = "Almost there/"; + break; + case NavigationState.Done: + NavigationText = "Cool! Seems all lyric has it's own language. Go to next step to generate ruby."; + break; + case NavigationState.Error: + NavigationText = "Oops, seems cause some error in here."; + break; + } + } + } } } diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/UseLanguageDetectorPopupDialog.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/UseLanguageDetectorPopupDialog.cs new file mode 100644 index 000000000..95270da65 --- /dev/null +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/AssignLanguage/UseLanguageDetectorPopupDialog.cs @@ -0,0 +1,32 @@ +// Copyright (c) andy840119 . Licensed under the GPL Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics.Sprites; +using osu.Game.Overlays.Dialog; +using System; + +namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric.AssignLanguage +{ + public class UseLanguageDetectorPopupDialog : PopupDialog + { + public UseLanguageDetectorPopupDialog(Action okAction = null) + { + Icon = FontAwesome.Solid.Globe; + HeaderText = "LanguageDetector"; + BodyText = $"Would you like to use language detector to auto assign each lyric's language?"; + Buttons = new PopupDialogButton[] + { + new PopupDialogOkButton + { + Text = @"OK", + Action = () => okAction?.Invoke(true), + }, + new PopupDialogCancelButton + { + Text = @"Cancel", + Action = () => okAction?.Invoke(false), + }, + }; + } + } +} diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateRuby/GenerateRubySubScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateRuby/GenerateRubySubScreen.cs index 5c8c34b9b..ca3472295 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateRuby/GenerateRubySubScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateRuby/GenerateRubySubScreen.cs @@ -1,11 +1,13 @@ // Copyright (c) andy840119 . Licensed under the GPL Licence. // See the LICENCE file in the repository root for full licence text. +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric.GenerateRuby { - public class GenerateRubySubScreen : ImportLyricSubScreen + public class GenerateRubySubScreen : ImportLyricSubScreenWithTopNavigation { public override string Title => "Generate ruby"; @@ -15,9 +17,30 @@ public class GenerateRubySubScreen : ImportLyricSubScreen public override IconUsage Icon => FontAwesome.Solid.Gem; + protected override TopNavigation CreateNavigation() + => new GenerateRubyNavigation(this); + + protected override Drawable CreateContent() + => new Container(); + public override void Complete() { ScreenStack.Push(ImportLyricStep.GenerateTimeTag); } + + public class GenerateRubyNavigation : TopNavigation + { + public GenerateRubyNavigation(ImportLyricSubScreen screen) + : base(screen) + { + } + + protected override void UpdateState(NavigationState value) + { + base.UpdateState(value); + + // todo : update text + } + } } } diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateTimeTag/GenerateTimeTagSubScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateTimeTag/GenerateTimeTagSubScreen.cs index 21c0a2e7f..cb49cdf51 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateTimeTag/GenerateTimeTagSubScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/GenerateTimeTag/GenerateTimeTagSubScreen.cs @@ -1,11 +1,13 @@ // Copyright (c) andy840119 . Licensed under the GPL Licence. // See the LICENCE file in the repository root for full licence text. +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric.GenerateTimeTag { - public class GenerateTimeTagSubScreen : ImportLyricSubScreen + public class GenerateTimeTagSubScreen : ImportLyricSubScreenWithTopNavigation { public override string Title => "Generate time tag"; @@ -15,9 +17,30 @@ public class GenerateTimeTagSubScreen : ImportLyricSubScreen public override IconUsage Icon => FontAwesome.Solid.Tag; + protected override TopNavigation CreateNavigation() + => new GenerateTimeTagNavigation(this); + + protected override Drawable CreateContent() + => new Container(); + public override void Complete() { ScreenStack.Push(ImportLyricStep.Success); } + + public class GenerateTimeTagNavigation : TopNavigation + { + public GenerateTimeTagNavigation(ImportLyricSubScreen screen) + : base(screen) + { + } + + protected override void UpdateState(NavigationState value) + { + base.UpdateState(value); + + // todo : update text + } + } } } diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricScreen.cs index 8209a9eae..c2928811d 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricScreen.cs @@ -19,12 +19,12 @@ public class ImportLyricScreen : EditorScreen private readonly ImportLyricWaveContainer waves; [Cached] - private readonly ImportLyricSubScreenStack screenStack; + protected ImportLyricSubScreenStack ScreenStack { get; private set; } public ImportLyricScreen(FileInfo fileInfo) : this() { - if (!(screenStack.CurrentScreen is DragFileSubScreen dragFileSubScreen)) + if (!(ScreenStack.CurrentScreen is DragFileSubScreen dragFileSubScreen)) throw new ScreenStack.ScreenNotInStackException($"{nameof(DragFileSubScreen)} does not in the screen."); dragFileSubScreen.ImportLyricFile(fileInfo); @@ -49,13 +49,13 @@ public ImportLyricScreen() { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = Header.HEIGHT }, - Child = screenStack = new ImportLyricSubScreenStack { RelativeSizeAxes = Axes.Both } + Child = ScreenStack = new ImportLyricSubScreenStack { RelativeSizeAxes = Axes.Both } }, - new Header(screenStack), + new Header(ScreenStack), } }; - screenStack.Push(ImportLyricStep.ImportLyric); + ScreenStack.Push(ImportLyricStep.ImportLyric); } protected override void LoadComplete() diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreen.cs index 3b17563c7..b7282576e 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreen.cs @@ -7,7 +7,6 @@ using osu.Framework.Screens; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays; -using osu.Game.Rulesets.Karaoke.Graphics.Overlays.Dialog; using osu.Game.Screens; using System; @@ -83,12 +82,7 @@ public override void OnSuspending(IScreen next) public virtual void CanRollBack(IImportLyricSubScreen rollBackScreen, Action callBack) { - DialogOverlay.Push(new OkPopupDialog(callBack) - { - Icon = rollBackScreen.Icon, - HeaderText = rollBackScreen.ShortTitle, - BodyText = $"Will roll-back to step '{rollBackScreen.Title}'", - }); + DialogOverlay.Push(new RollBackPopupDialog(rollBackScreen, callBack)); } public override string ToString() => Title; diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenStack.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenStack.cs index 236351adc..9e7a06a85 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenStack.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenStack.cs @@ -14,6 +14,18 @@ public class ImportLyricSubScreenStack : OsuScreenStack { public void Push(ImportLyricStep step) { + if (CurrentScreen is IImportLyricSubScreen lyricSubScreen) + { + if (step == lyricSubScreen.Step) + throw new ScreenNotCurrentException("Cannot push same screen."); + + if (step <= lyricSubScreen.Step) + throw new ScreenNotCurrentException("Cannot push pervious then current screen."); + + if (step != ImportLyricStep.GenerateRuby && step - lyricSubScreen.Step > 1) + throw new ScreenNotCurrentException("Only generate ruby step can be skipped."); + } + switch (step) { case ImportLyricStep.ImportLyric: diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenWithTopNavigation.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenWithTopNavigation.cs new file mode 100644 index 000000000..3c003d462 --- /dev/null +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/ImportLyricSubScreenWithTopNavigation.cs @@ -0,0 +1,158 @@ +// Copyright (c) andy840119 . Licensed under the GPL Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Karaoke.Graphics.Shapes; +using System; + +namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric +{ + public abstract class ImportLyricSubScreenWithTopNavigation : ImportLyricSubScreen + { + protected TopNavigation Navigation { get; private set; } + + public ImportLyricSubScreenWithTopNavigation() + { + Padding = new MarginPadding(10); + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.Both, + RowDimensions = new[] + { + new Dimension(GridSizeMode.Absolute, 40), + new Dimension(GridSizeMode.Absolute, 10), + new Dimension(GridSizeMode.Distributed) + }, + Content = new[] + { + new Drawable[] + { + Navigation = CreateNavigation(), + }, + new Drawable[] { }, + new Drawable[] + { + CreateContent(), + } + } + }; + } + + protected abstract TopNavigation CreateNavigation(); + + protected abstract Drawable CreateContent(); + + public abstract class TopNavigation : Container + { + [Resolved] + protected OsuColour Colours { get; private set; } + + protected ImportLyricSubScreen Screen { get; private set; } + + private readonly CornerBackground background; + private readonly OsuSpriteText text; + private readonly IconButton button; + + public TopNavigation(ImportLyricSubScreen screen) + { + Screen = screen; + + RelativeSizeAxes = Axes.Both; + InternalChildren = new Drawable[] + { + background = new CornerBackground + { + RelativeSizeAxes = Axes.Both, + }, + text = new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Margin = new MarginPadding{ Left = 15 } + }, + button = new IconButton + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Margin = new MarginPadding{ Right = 5 }, + Action = () => + { + if (AbleToNextStep(State)) + { + CompleteClicked(); + } + } + } + }; + } + + protected string NavigationText { get => text.Text; set => text.Text = value; } + + protected string TooltipText { get => button.TooltipText; set => button.TooltipText = value; } + + private NavigationState state; + public NavigationState State { + get => state; + set + { + state = value; + UpdateState(State); + } + } + + protected virtual void UpdateState(NavigationState value) + { + switch (value) + { + case NavigationState.Initial: + background.Colour = Colours.Gray2; + text.Colour = Colours.GrayF; + button.Colour = Colours.Gray6; + button.Icon = FontAwesome.Regular.QuestionCircle; + break; + case NavigationState.Working: + background.Colour = Colours.Gray2; + text.Colour = Colours.GrayF; + button.Colour = Colours.Gray6; + button.Icon = FontAwesome.Solid.InfoCircle; + break; + case NavigationState.Done: + background.Colour = Colours.Gray6; + text.Colour = Colours.GrayF; + button.Colour = Colours.Yellow; + button.Icon = FontAwesome.Regular.ArrowAltCircleRight; + break; + case NavigationState.Error: + background.Colour = Colours.Gray2; + text.Colour = Colours.GrayF; + button.Colour = Colours.Yellow; + button.Icon = FontAwesome.Solid.ExclamationTriangle; + break; + default: + throw new IndexOutOfRangeException("Should not goes to here"); + } + } + + protected virtual bool AbleToNextStep(NavigationState value) => value == NavigationState.Done; + + protected virtual void CompleteClicked() => Screen.Complete(); + } + + public enum NavigationState + { + Initial, + + Working, + + Done, + + Error + } + } +} diff --git a/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/RollBackPopupDialog.cs b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/RollBackPopupDialog.cs new file mode 100644 index 000000000..004892f06 --- /dev/null +++ b/osu.Game.Rulesets.Karaoke/Edit/ImportLyric/RollBackPopupDialog.cs @@ -0,0 +1,31 @@ +// Copyright (c) andy840119 . Licensed under the GPL Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Game.Overlays.Dialog; +using System; + +namespace osu.Game.Rulesets.Karaoke.Edit.ImportLyric +{ + public class RollBackPopupDialog : PopupDialog + { + public RollBackPopupDialog(IImportLyricSubScreen screen, Action okAction = null) + { + Icon = screen.Icon; + HeaderText = screen.ShortTitle; + BodyText = $"Will roll-back to step '{screen.Title}'"; + Buttons = new PopupDialogButton[] + { + new PopupDialogOkButton + { + Text = @"OK", + Action = () => okAction?.Invoke(true), + }, + new PopupDialogCancelButton + { + Text = @"Cancel", + Action = () => okAction?.Invoke(false), + }, + }; + } + } +} diff --git a/osu.Game.Rulesets.Karaoke/Edit/KaraokeBlueprintContainer.cs b/osu.Game.Rulesets.Karaoke/Edit/KaraokeBlueprintContainer.cs index 7afff72fb..ec24dcc5e 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/KaraokeBlueprintContainer.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/KaraokeBlueprintContainer.cs @@ -1,7 +1,6 @@ // Copyright (c) andy840119 . Licensed under the GPL Licence. // See the LICENCE file in the repository root for full licence text. -using System.Collections.Generic; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Karaoke.Edit.Blueprints.Lyrics; using osu.Game.Rulesets.Karaoke.Edit.Blueprints.Notes; diff --git a/osu.Game.Rulesets.Karaoke/Edit/KaraokeHitObjectComposer.cs b/osu.Game.Rulesets.Karaoke/Edit/KaraokeHitObjectComposer.cs index d8e687a5e..e5c2ca528 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/KaraokeHitObjectComposer.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/KaraokeHitObjectComposer.cs @@ -15,7 +15,6 @@ using osu.Game.Rulesets.Karaoke.UI; using osu.Game.Rulesets.Karaoke.UI.Position; using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Screens.Edit.Components.TernaryButtons; diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/Badge.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/Badge.cs similarity index 95% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/Badge.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/Badge.cs index 7a22202ad..a572e060d 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/Badge.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/Badge.cs @@ -8,7 +8,7 @@ using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Karaoke.Objects; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components.Badges +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components.Badges { public abstract class Badge : Container { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/LayoutInfoBadge.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/LayoutInfoBadge.cs similarity index 91% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/LayoutInfoBadge.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/LayoutInfoBadge.cs index 992cb93d1..fb3e34ede 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/LayoutInfoBadge.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/LayoutInfoBadge.cs @@ -5,7 +5,7 @@ using osu.Game.Graphics; using osu.Game.Rulesets.Karaoke.Objects; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components.Badges +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components.Badges { public class LayoutInfoBadge : Badge { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/StyleInfoBadge.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/StyleInfoBadge.cs similarity index 91% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/StyleInfoBadge.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/StyleInfoBadge.cs index 0e4a6b868..b287b13e1 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/StyleInfoBadge.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/StyleInfoBadge.cs @@ -5,7 +5,7 @@ using osu.Game.Graphics; using osu.Game.Rulesets.Karaoke.Objects; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components.Badges +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components.Badges { public class StyleInfoBadge : Badge { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/TimeInfoBadge.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/TimeInfoBadge.cs similarity index 94% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/TimeInfoBadge.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/TimeInfoBadge.cs index f7cc21b77..a80ef30f2 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/Badges/TimeInfoBadge.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/Badges/TimeInfoBadge.cs @@ -8,7 +8,7 @@ using osu.Game.Graphics; using osu.Game.Rulesets.Karaoke.Objects; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components.Badges +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components.Badges { public class TimeInfoBadge : Badge { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/LyricControl.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/LyricControl.cs similarity index 96% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/LyricControl.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/LyricControl.cs index 1448162a1..58f9d1fbc 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/Components/LyricControl.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/Components/LyricControl.cs @@ -9,7 +9,7 @@ using osu.Game.Rulesets.Karaoke.Objects.Drawables; using osu.Game.Rulesets.Karaoke.Skinning.Components; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components { public class LyricControl : Container { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/KaraokeLyricEditorSkin.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/KaraokeLyricEditorSkin.cs similarity index 96% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/KaraokeLyricEditorSkin.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/KaraokeLyricEditorSkin.cs index 11847693f..537edccfe 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/KaraokeLyricEditorSkin.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/KaraokeLyricEditorSkin.cs @@ -4,7 +4,7 @@ using System; using osu.Game.Rulesets.Karaoke.Skinning; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics { /// /// This karaoke skin is using in lyric editor only. diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditor.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditor.cs similarity index 98% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditor.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditor.cs index 8a0484347..69f553393 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditor.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditor.cs @@ -9,7 +9,7 @@ using osu.Game.Screens.Edit; using osu.Game.Skinning; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics { public class LyricEditor : Container { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditorScreen.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditorScreen.cs similarity index 98% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditorScreen.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditorScreen.cs index ede665330..b62acd4e8 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricEditorScreen.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricEditorScreen.cs @@ -17,7 +17,7 @@ using osu.Game.Screens.Edit; using osuTK; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics { public class LyricEditorScreen : EditorScreenWithTimeline, ICanAcceptFiles { diff --git a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricRearrangeableListContainer.cs b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricRearrangeableListContainer.cs similarity index 96% rename from osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricRearrangeableListContainer.cs rename to osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricRearrangeableListContainer.cs index a0163a90b..9abe333d4 100644 --- a/osu.Game.Rulesets.Karaoke/Edit/LyricEditor/LyricRearrangeableListContainer.cs +++ b/osu.Game.Rulesets.Karaoke/Edit/Lyrics/LyricRearrangeableListContainer.cs @@ -8,12 +8,12 @@ using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Graphics.Containers; -using osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components; -using osu.Game.Rulesets.Karaoke.Edit.LyricEditor.Components.Badges; +using osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components; +using osu.Game.Rulesets.Karaoke.Edit.Lyrics.Components.Badges; using osu.Game.Rulesets.Karaoke.Objects; using osuTK; -namespace osu.Game.Rulesets.Karaoke.Edit.LyricEditor +namespace osu.Game.Rulesets.Karaoke.Edit.Lyrics { public class LyricRearrangeableListContainer : OsuRearrangeableListContainer {