From b8287f3687e06c88b6a565994cf23233f285d2e2 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 3 May 2022 10:30:32 +0300 Subject: [PATCH 1/5] Display toast notification on editor distance spacing change --- .../Edit/DistancedHitObjectComposer.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs index 1a4ea845d0..a19944712e 100644 --- a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs @@ -3,12 +3,16 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.LocalisationExtensions; using osu.Framework.Graphics; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; +using osu.Framework.Localisation; using osu.Game.Graphics.Containers; using osu.Game.Graphics.UserInterface; using osu.Game.Input.Bindings; +using osu.Game.Overlays; +using osu.Game.Overlays.OSD; using osu.Game.Overlays.Settings.Sections; using osu.Game.Rulesets.Objects; using osuTK; @@ -37,6 +41,9 @@ namespace osu.Game.Rulesets.Edit private ExpandableSlider> distanceSpacingSlider; private bool distanceSpacingScrollActive; + [Resolved] + private OnScreenDisplay onScreenDisplay { get; set; } + protected DistancedHitObjectComposer(Ruleset ruleset) : base(ruleset) { @@ -72,6 +79,10 @@ namespace osu.Game.Rulesets.Edit { distanceSpacingSlider.ContractedLabelText = $"D. S. ({v.NewValue:0.##x})"; distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({v.NewValue:0.##x})"; + + if (v.NewValue != v.OldValue) + onScreenDisplay.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"))); + EditorBeatmap.BeatmapInfo.DistanceSpacing = v.NewValue; }, true); } @@ -81,7 +92,6 @@ namespace osu.Game.Rulesets.Edit { if (!DistanceSpacingMultiplier.Disabled && e.Action == GlobalAction.EditorDistanceSpacing) { - RightSideToolboxContainer.Expanded.Value = true; distanceSpacingScrollActive = true; return true; } @@ -92,10 +102,7 @@ namespace osu.Game.Rulesets.Edit public void OnReleased(KeyBindingReleaseEvent e) { if (!DistanceSpacingMultiplier.Disabled && e.Action == GlobalAction.EditorDistanceSpacing) - { - RightSideToolboxContainer.Expanded.Value = false; distanceSpacingScrollActive = false; - } } protected override bool OnScroll(ScrollEvent e) @@ -160,5 +167,13 @@ namespace osu.Game.Rulesets.Edit FillFlow.Spacing = new Vector2(10); } } + + private class DistanceSpacingToast : Toast + { + public DistanceSpacingToast(LocalisableString value) + : base("Distance Spacing", value, string.Empty) + { + } + } } } From 0dd2e1652c2a040e6bd831c2cbdab12d22f33210 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 3 May 2022 11:15:28 +0300 Subject: [PATCH 2/5] Mark `OnScreenDisplay` dependency as nullable --- osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs index a19944712e..75b87fb6e8 100644 --- a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs @@ -41,7 +41,7 @@ namespace osu.Game.Rulesets.Edit private ExpandableSlider> distanceSpacingSlider; private bool distanceSpacingScrollActive; - [Resolved] + [Resolved(canBeNull: true)] private OnScreenDisplay onScreenDisplay { get; set; } protected DistancedHitObjectComposer(Ruleset ruleset) @@ -81,7 +81,7 @@ namespace osu.Game.Rulesets.Edit distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({v.NewValue:0.##x})"; if (v.NewValue != v.OldValue) - onScreenDisplay.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"))); + onScreenDisplay?.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"))); EditorBeatmap.BeatmapInfo.DistanceSpacing = v.NewValue; }, true); From 0b8fd2e39f9c4e93d91c43f93da1c08e27244f33 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 4 May 2022 11:41:33 +0300 Subject: [PATCH 3/5] Improve distance spacing toast inline with key binding changes --- .../Edit/DistancedHitObjectComposer.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs index afd6909874..466b6cba4b 100644 --- a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs @@ -3,11 +3,13 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions; using osu.Framework.Extensions.LocalisationExtensions; using osu.Framework.Graphics; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Framework.Localisation; +using osu.Game.Configuration; using osu.Game.Graphics.Containers; using osu.Game.Graphics.UserInterface; using osu.Game.Input.Bindings; @@ -80,7 +82,7 @@ namespace osu.Game.Rulesets.Edit distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({v.NewValue:0.##x})"; if (v.NewValue != v.OldValue) - onScreenDisplay?.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"))); + onScreenDisplay?.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"), v)); EditorBeatmap.BeatmapInfo.DistanceSpacing = v.NewValue; }, true); @@ -182,10 +184,23 @@ namespace osu.Game.Rulesets.Edit private class DistanceSpacingToast : Toast { - public DistanceSpacingToast(LocalisableString value) - : base("Distance Spacing", value, string.Empty) + private readonly ValueChangedEvent change; + + public DistanceSpacingToast(LocalisableString value, ValueChangedEvent change) + : base(getAction(change).GetLocalisableDescription(), value, string.Empty) { + this.change = change; } + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + ShortcutText.Text = config.LookupKeyBindings(getAction(change)); + } + + private static GlobalAction getAction(ValueChangedEvent change) => change.NewValue - change.OldValue > 0 + ? GlobalAction.EditorIncreaseDistanceSpacing + : GlobalAction.EditorDecreaseDistanceSpacing; } } } From f5d4f02200aa1118485de0eddfa977aa4ec09325 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 4 May 2022 11:59:29 +0300 Subject: [PATCH 4/5] Use `ToUpper` for key binding text --- osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs index 466b6cba4b..3ca443cc85 100644 --- a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs @@ -195,7 +195,7 @@ namespace osu.Game.Rulesets.Edit [BackgroundDependencyLoader] private void load(OsuConfigManager config) { - ShortcutText.Text = config.LookupKeyBindings(getAction(change)); + ShortcutText.Text = config.LookupKeyBindings(getAction(change)).ToUpper(); } private static GlobalAction getAction(ValueChangedEvent change) => change.NewValue - change.OldValue > 0 From 4e0f899159aebc9b5de32b04faefc7f98f8cc654 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 4 May 2022 18:13:30 +0900 Subject: [PATCH 5/5] Rename value changed variable --- osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs index 3ca443cc85..081610a62b 100644 --- a/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs @@ -76,15 +76,15 @@ namespace osu.Game.Rulesets.Edit if (!DistanceSpacingMultiplier.Disabled) { DistanceSpacingMultiplier.Value = EditorBeatmap.BeatmapInfo.DistanceSpacing; - DistanceSpacingMultiplier.BindValueChanged(v => + DistanceSpacingMultiplier.BindValueChanged(multiplier => { - distanceSpacingSlider.ContractedLabelText = $"D. S. ({v.NewValue:0.##x})"; - distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({v.NewValue:0.##x})"; + distanceSpacingSlider.ContractedLabelText = $"D. S. ({multiplier.NewValue:0.##x})"; + distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({multiplier.NewValue:0.##x})"; - if (v.NewValue != v.OldValue) - onScreenDisplay?.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"), v)); + if (multiplier.NewValue != multiplier.OldValue) + onScreenDisplay?.Display(new DistanceSpacingToast(multiplier.NewValue.ToLocalisableString(@"0.##x"), multiplier)); - EditorBeatmap.BeatmapInfo.DistanceSpacing = v.NewValue; + EditorBeatmap.BeatmapInfo.DistanceSpacing = multiplier.NewValue; }, true); } }