From d146da95466e5251f37376da8fbbf07701e6c1d2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 13 Sep 2023 16:43:06 +0900 Subject: [PATCH 1/5] Fix rate adjust mods not showing "x" prefix on customisation slider's tooltip --- .../Settings/MultiplierSettingsSlider.cs | 24 +++++++++++++++++++ osu.Game/Rulesets/Mods/ModAdaptiveSpeed.cs | 3 ++- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 3 ++- osu.Game/Rulesets/Mods/ModHalfTime.cs | 3 ++- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 5 ++-- 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 osu.Game/Overlays/Settings/MultiplierSettingsSlider.cs diff --git a/osu.Game/Overlays/Settings/MultiplierSettingsSlider.cs b/osu.Game/Overlays/Settings/MultiplierSettingsSlider.cs new file mode 100644 index 0000000000..bd5b8f92b6 --- /dev/null +++ b/osu.Game/Overlays/Settings/MultiplierSettingsSlider.cs @@ -0,0 +1,24 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Localisation; +using osu.Game.Graphics.UserInterface; + +namespace osu.Game.Overlays.Settings +{ + public partial class MultiplierSettingsSlider : SettingsSlider + { + public MultiplierSettingsSlider() + { + KeyboardStep = 0.01f; + } + + /// + /// A slider bar which adds a "x" to the end of the tooltip string. + /// + public partial class MultiplierRoundedSliderBar : RoundedSliderBar + { + public override LocalisableString TooltipText => $"{base.TooltipText}x"; + } + } +} diff --git a/osu.Game/Rulesets/Mods/ModAdaptiveSpeed.cs b/osu.Game/Rulesets/Mods/ModAdaptiveSpeed.cs index e7127abcf0..f62ba21827 100644 --- a/osu.Game/Rulesets/Mods/ModAdaptiveSpeed.cs +++ b/osu.Game/Rulesets/Mods/ModAdaptiveSpeed.cs @@ -10,6 +10,7 @@ using osu.Framework.Localisation; using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Configuration; +using osu.Game.Overlays.Settings; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; @@ -35,7 +36,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust), typeof(ModTimeRamp), typeof(ModAutoplay) }; - [SettingSource("Initial rate", "The starting speed of the track")] + [SettingSource("Initial rate", "The starting speed of the track", SettingControlType = typeof(MultiplierSettingsSlider))] public BindableNumber InitialRate { get; } = new BindableDouble(1) { MinValue = 0.5, diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index 733610c040..27e594edfe 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -6,6 +6,7 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Localisation; using osu.Game.Configuration; using osu.Game.Graphics; +using osu.Game.Overlays.Settings; namespace osu.Game.Rulesets.Mods { @@ -17,7 +18,7 @@ namespace osu.Game.Rulesets.Mods public override ModType Type => ModType.DifficultyIncrease; public override LocalisableString Description => "Zoooooooooom..."; - [SettingSource("Speed increase", "The actual increase to apply")] + [SettingSource("Speed increase", "The actual increase to apply", SettingControlType = typeof(MultiplierSettingsSlider))] public override BindableNumber SpeedChange { get; } = new BindableDouble(1.5) { MinValue = 1.01, diff --git a/osu.Game/Rulesets/Mods/ModHalfTime.cs b/osu.Game/Rulesets/Mods/ModHalfTime.cs index 06c7750035..7415c94cd8 100644 --- a/osu.Game/Rulesets/Mods/ModHalfTime.cs +++ b/osu.Game/Rulesets/Mods/ModHalfTime.cs @@ -6,6 +6,7 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Localisation; using osu.Game.Configuration; using osu.Game.Graphics; +using osu.Game.Overlays.Settings; namespace osu.Game.Rulesets.Mods { @@ -17,7 +18,7 @@ namespace osu.Game.Rulesets.Mods public override ModType Type => ModType.DifficultyReduction; public override LocalisableString Description => "Less zoom..."; - [SettingSource("Speed decrease", "The actual decrease to apply")] + [SettingSource("Speed decrease", "The actual decrease to apply", SettingControlType = typeof(MultiplierSettingsSlider))] public override BindableNumber SpeedChange { get; } = new BindableDouble(0.75) { MinValue = 0.5, diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index 7285315c3b..54ee0cd3bf 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -7,6 +7,7 @@ using osu.Framework.Audio; using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Configuration; +using osu.Game.Overlays.Settings; using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Mods @@ -20,10 +21,10 @@ namespace osu.Game.Rulesets.Mods public override double ScoreMultiplier => 0.5; - [SettingSource("Initial rate", "The starting speed of the track")] + [SettingSource("Initial rate", "The starting speed of the track", SettingControlType = typeof(MultiplierSettingsSlider))] public abstract BindableNumber InitialRate { get; } - [SettingSource("Final rate", "The final speed to ramp to")] + [SettingSource("Final rate", "The final speed to ramp to", SettingControlType = typeof(MultiplierSettingsSlider))] public abstract BindableNumber FinalRate { get; } [SettingSource("Adjust pitch", "Should pitch be adjusted with speed")] From f5cee22db79eca51c234da2fc1865ee1606ef1de Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 13 Sep 2023 17:05:42 +0900 Subject: [PATCH 2/5] Collapse mod presets column slightly when not in use --- osu.Game/Overlays/Mods/ModPresetColumn.cs | 10 +++++++++- osu.Game/Overlays/Mods/ModSelectColumn.cs | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModPresetColumn.cs b/osu.Game/Overlays/Mods/ModPresetColumn.cs index 3b12eec195..0803389f45 100644 --- a/osu.Game/Overlays/Mods/ModPresetColumn.cs +++ b/osu.Game/Overlays/Mods/ModPresetColumn.cs @@ -26,6 +26,8 @@ namespace osu.Game.Overlays.Mods [Resolved] private IBindable ruleset { get; set; } = null!; + private const float contracted_width = WIDTH - 120; + [BackgroundDependencyLoader] private void load(OsuColour colours) { @@ -42,6 +44,8 @@ namespace osu.Game.Overlays.Mods base.LoadComplete(); ruleset.BindValueChanged(_ => rulesetChanged(), true); + + Width = contracted_width; } private IDisposable? presetSubscription; @@ -65,7 +69,11 @@ namespace osu.Game.Overlays.Mods { cancellationTokenSource?.Cancel(); - if (!presets.Any()) + bool hasPresets = presets.Any(); + + this.ResizeWidthTo(hasPresets ? WIDTH : contracted_width, 200, Easing.OutQuint); + + if (!hasPresets) { removeAndDisposePresetPanels(); return; diff --git a/osu.Game/Overlays/Mods/ModSelectColumn.cs b/osu.Game/Overlays/Mods/ModSelectColumn.cs index 338ebdaef4..1c56763bd9 100644 --- a/osu.Game/Overlays/Mods/ModSelectColumn.cs +++ b/osu.Game/Overlays/Mods/ModSelectColumn.cs @@ -61,9 +61,11 @@ namespace osu.Game.Overlays.Mods private const float header_height = 42; + protected const float WIDTH = 320; + protected ModSelectColumn() { - Width = 320; + Width = WIDTH; RelativeSizeAxes = Axes.Y; Shear = new Vector2(ShearedOverlayContainer.SHEAR, 0); From 753c1c877c48527c9a5b4d3f5ecc6608581d0e89 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 13 Sep 2023 23:10:13 +0900 Subject: [PATCH 3/5] Revert masking SSBO changes --- .../UI/Cursor/CursorTrail.cs | 20 +++++-------------- .../Resources/Shaders/sh_TestVertex.vs | 2 +- osu.Game/Screens/Loader.cs | 5 ++++- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs index 0774d34488..a29faac5a0 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs @@ -286,7 +286,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor if (time - part.Time >= 1) continue; - vertexBatch.Add(new TexturedTrailVertex(renderer) + vertexBatch.Add(new TexturedTrailVertex { Position = new Vector2(part.Position.X - size.X * originPosition.X, part.Position.Y + size.Y * (1 - originPosition.Y)), TexturePosition = textureRect.BottomLeft, @@ -295,7 +295,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor Time = part.Time }); - vertexBatch.Add(new TexturedTrailVertex(renderer) + vertexBatch.Add(new TexturedTrailVertex { Position = new Vector2(part.Position.X + size.X * (1 - originPosition.X), part.Position.Y + size.Y * (1 - originPosition.Y)), TexturePosition = textureRect.BottomRight, @@ -304,7 +304,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor Time = part.Time }); - vertexBatch.Add(new TexturedTrailVertex(renderer) + vertexBatch.Add(new TexturedTrailVertex { Position = new Vector2(part.Position.X + size.X * (1 - originPosition.X), part.Position.Y - size.Y * originPosition.Y), TexturePosition = textureRect.TopRight, @@ -313,7 +313,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor Time = part.Time }); - vertexBatch.Add(new TexturedTrailVertex(renderer) + vertexBatch.Add(new TexturedTrailVertex { Position = new Vector2(part.Position.X - size.X * originPosition.X, part.Position.Y - size.Y * originPosition.Y), TexturePosition = textureRect.TopLeft, @@ -362,22 +362,12 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor [VertexMember(1, VertexAttribPointerType.Float)] public float Time; - [VertexMember(1, VertexAttribPointerType.Int)] - private readonly int maskingIndex; - - public TexturedTrailVertex(IRenderer renderer) - { - this = default; - maskingIndex = renderer.CurrentMaskingIndex; - } - public bool Equals(TexturedTrailVertex other) { return Position.Equals(other.Position) && TexturePosition.Equals(other.TexturePosition) && Colour.Equals(other.Colour) - && Time.Equals(other.Time) - && maskingIndex == other.maskingIndex; + && Time.Equals(other.Time); } } } diff --git a/osu.Game.Tests/Resources/Shaders/sh_TestVertex.vs b/osu.Game.Tests/Resources/Shaders/sh_TestVertex.vs index 80ed686ba5..505554bb33 100644 --- a/osu.Game.Tests/Resources/Shaders/sh_TestVertex.vs +++ b/osu.Game.Tests/Resources/Shaders/sh_TestVertex.vs @@ -13,7 +13,7 @@ layout(location = 4) out mediump vec2 v_BlendRange; void main(void) { // Transform from screen space to masking space. - highp vec3 maskingPos = g_MaskingInfo.ToMaskingSpace * vec3(m_Position, 1.0); + highp vec3 maskingPos = g_ToMaskingSpace * vec3(m_Position, 1.0); v_MaskingPosition = maskingPos.xy / maskingPos.z; v_Colour = m_Colour; diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs index 962c7d9d14..372cfe748e 100644 --- a/osu.Game/Screens/Loader.cs +++ b/osu.Game/Screens/Loader.cs @@ -126,9 +126,12 @@ namespace osu.Game.Screens private void load(ShaderManager manager) { loadTargets.Add(manager.Load(VertexShaderDescriptor.TEXTURE_2, FragmentShaderDescriptor.TEXTURE)); - loadTargets.Add(manager.Load(VertexShaderDescriptor.TEXTURE_2_NO_MASKING, FragmentShaderDescriptor.BLUR)); + loadTargets.Add(manager.Load(VertexShaderDescriptor.TEXTURE_2, FragmentShaderDescriptor.BLUR)); + loadTargets.Add(manager.Load(@"CursorTrail", FragmentShaderDescriptor.TEXTURE)); + loadTargets.Add(manager.Load(VertexShaderDescriptor.TEXTURE_2, "TriangleBorder")); + loadTargets.Add(manager.Load(VertexShaderDescriptor.TEXTURE_3, FragmentShaderDescriptor.TEXTURE)); } From 68323671ec689160ffc4790e8fd84a573979c3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 14 Sep 2023 08:24:18 +0200 Subject: [PATCH 4/5] Update framework and resources --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 4 ++-- osu.iOS.props | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index 2bfdce5ab8..10cee77b09 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -10,7 +10,7 @@ true - +