diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs
index d4693e57c0..19f0219051 100644
--- a/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs
+++ b/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs
@@ -5,6 +5,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Allocation;
+using osu.Framework.Audio;
+using osu.Framework.Audio.Sample;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
@@ -221,6 +223,9 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay.Components
private bool expanded;
+ private Sample messageReceivedSample = null!;
+ private double? lastSamplePlayback;
+
public BubbleChatHistory()
{
AutoSizeAxes = Axes.Y;
@@ -232,6 +237,12 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay.Components
};
}
+ [BackgroundDependencyLoader]
+ private void load(AudioManager audio)
+ {
+ messageReceivedSample = audio.Samples.Get(@"Multiplayer/Matchmaking/Ranked/message");
+ }
+
///
/// Collapses the display such that only new messages are temporarily shown.
///
@@ -301,6 +312,8 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay.Components
newMessage.Show();
+ playSample();
+
// If not in the expanded state, hide the new message after a short while.
if (!expanded)
{
@@ -309,6 +322,15 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay.Components
}
}
+ private void playSample()
+ {
+ if (lastSamplePlayback != null && Time.Current - lastSamplePlayback < 100)
+ return;
+
+ messageReceivedSample.Play();
+ lastSamplePlayback = Time.Current;
+ }
+
private partial class MessageBubble : CompositeDrawable
{
private readonly APIUser user;
diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayStageOverlay.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayStageOverlay.cs
index a6a07ccf84..5e99a15770 100644
--- a/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayStageOverlay.cs
+++ b/osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayStageOverlay.cs
@@ -2,6 +2,8 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
+using osu.Framework.Audio;
+using osu.Framework.Audio.Sample;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
@@ -10,6 +12,7 @@ using osu.Framework.Localisation;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Online.API.Requests.Responses;
+using osu.Game.Overlays;
using osu.Game.Users.Drawables;
using osuTK;
@@ -27,6 +30,11 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay
private FillFlowContainer detailsContainer = null!;
private CircularContainer avatarContainer = null!;
+ private Sample stageChangeSample = null!;
+
+ [Resolved]
+ private MusicController musicController { get; set; } = null!;
+
public RankedPlayStageOverlay(LocalisableString stageName, RankedPlayColourScheme colourScheme)
{
this.stageName = stageName;
@@ -34,7 +42,7 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay
}
[BackgroundDependencyLoader]
- private void load()
+ private void load(AudioManager audio)
{
RelativeSizeAxes = Axes.Both;
@@ -153,6 +161,8 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay
Text = $"{Multiplier:N0}x damage",
});
}
+
+ stageChangeSample = audio.Samples.Get(@"Multiplayer/Matchmaking/Ranked/stage-change");
}
protected override void LoadComplete()
@@ -173,6 +183,14 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay
.ScaleTo(0.9f)
.ScaleTo(1f, duration, easing);
+ musicController.DuckMomentarily(time_visible, new DuckParameters
+ {
+ DuckDuration = 0,
+ DuckVolumeTo = 0.5,
+ DuckCutoffTo = 600,
+ });
+ stageChangeSample.Play();
+
using (BeginDelayedSequence(time_visible))
{
this.FadeOut(duration, easing)
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 4c680a5d4a..0fbcfbcb32 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -40,7 +40,7 @@
-
+