mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 14:12:55 +08:00
Fix inconsistent sound effects on mod buttons
Because HoverClickSounds.OnClick() does not fire upon right clicking on mod buttons, the sound effects that play on left and right click were inconsistent. Introduce HoverMouseUpSounds drawable that allows to play the click sound effect upon mouse up events for an arbitrary set of mouse buttons and use it on mod buttons.
This commit is contained in:
parent
ee4869647f
commit
a1c72db5f6
42
osu.Game/Graphics/UserInterface/HoverMouseUpSounds.cs
Normal file
42
osu.Game/Graphics/UserInterface/HoverMouseUpSounds.cs
Normal file
@ -0,0 +1,42 @@
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Audio;
|
||||
using osu.Framework.Audio.Sample;
|
||||
using osu.Framework.Extensions;
|
||||
using osu.Framework.Input.Events;
|
||||
using osuTK.Input;
|
||||
|
||||
namespace osu.Game.Graphics.UserInterface
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds hover sounds to a drawable, as well as click sounds upon MouseUp events for selected mouse buttons.
|
||||
/// Intended to be used for controls that can respond to clicks of buttons other than the left mouse button in place of <see cref="HoverClickSounds" />.
|
||||
/// </summary>
|
||||
public class HoverMouseUpSounds : HoverSounds
|
||||
{
|
||||
private SampleChannel sampleClick;
|
||||
private readonly List<MouseButton> buttons;
|
||||
|
||||
public HoverMouseUpSounds(List<MouseButton> buttons, HoverSampleSet sampleSet = HoverSampleSet.Normal)
|
||||
: base(sampleSet)
|
||||
{
|
||||
this.buttons = buttons;
|
||||
}
|
||||
|
||||
protected override bool OnMouseUp(MouseUpEvent e)
|
||||
{
|
||||
if (Contains(e.ScreenSpaceMousePosition) && buttons.Contains(e.Button))
|
||||
sampleClick?.Play();
|
||||
return base.OnMouseUp(e);
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(AudioManager audio)
|
||||
{
|
||||
sampleClick = audio.Samples.Get($@"UI/generic-select{SampleSet.GetDescription()}");
|
||||
}
|
||||
}
|
||||
}
|
@ -11,6 +11,7 @@ using osu.Game.Graphics.Sprites;
|
||||
using osu.Game.Rulesets.Mods;
|
||||
using osu.Game.Rulesets.UI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using osu.Framework.Graphics.Cursor;
|
||||
using osu.Framework.Input.Events;
|
||||
@ -283,7 +284,7 @@ namespace osu.Game.Overlays.Mods
|
||||
Anchor = Anchor.TopCentre,
|
||||
Font = OsuFont.GetFont(size: 18)
|
||||
},
|
||||
new HoverClickSounds()
|
||||
new HoverMouseUpSounds(new List<MouseButton> { MouseButton.Left, MouseButton.Right })
|
||||
};
|
||||
|
||||
Mod = mod;
|
||||
|
Loading…
Reference in New Issue
Block a user