From 881534eb7f3d71e817d511c64ca368e0e6eca069 Mon Sep 17 00:00:00 2001 From: Jamie Taylor Date: Sat, 1 Mar 2025 01:51:37 +0900 Subject: [PATCH] Add SFX for kiai/star fountain activation --- osu.Game/Screens/Menu/KiaiMenuFountains.cs | 14 +++++++++++++- osu.Game/Screens/Play/KiaiGameplayFountains.cs | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Menu/KiaiMenuFountains.cs b/osu.Game/Screens/Menu/KiaiMenuFountains.cs index 7978e9fa91..dbbff4a9f5 100644 --- a/osu.Game/Screens/Menu/KiaiMenuFountains.cs +++ b/osu.Game/Screens/Menu/KiaiMenuFountains.cs @@ -3,6 +3,8 @@ using System; using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Audio.Sample; using osu.Framework.Graphics; using osu.Framework.Utils; using osu.Game.Graphics.Containers; @@ -14,8 +16,11 @@ namespace osu.Game.Screens.Menu private StarFountain leftFountain = null!; private StarFountain rightFountain = null!; + private Sample? sample; + private SampleChannel? sampleChannel; + [BackgroundDependencyLoader] - private void load() + private void load(AudioManager audio) { RelativeSizeAxes = Axes.Both; @@ -34,6 +39,8 @@ namespace osu.Game.Screens.Menu X = -250, }, }; + + sample = audio.Samples.Get(@"Gameplay/fountain-shoot"); } private bool isTriggered; @@ -73,6 +80,11 @@ namespace osu.Game.Screens.Menu rightFountain.Shoot(1); break; } + + // Track sample channel to avoid overlapping playback + sampleChannel?.Stop(); + sampleChannel = sample?.GetChannel(); + sampleChannel?.Play(); } } } diff --git a/osu.Game/Screens/Play/KiaiGameplayFountains.cs b/osu.Game/Screens/Play/KiaiGameplayFountains.cs index d4e61dc5a0..7e09f50133 100644 --- a/osu.Game/Screens/Play/KiaiGameplayFountains.cs +++ b/osu.Game/Screens/Play/KiaiGameplayFountains.cs @@ -3,6 +3,8 @@ using System; using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Audio.Sample; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Utils; @@ -19,8 +21,11 @@ namespace osu.Game.Screens.Play private Bindable kiaiStarFountains = null!; + private Sample? sample; + private SampleChannel? sampleChannel; + [BackgroundDependencyLoader] - private void load(OsuConfigManager config) + private void load(OsuConfigManager config, AudioManager audio) { kiaiStarFountains = config.GetBindable(OsuSetting.StarFountains); @@ -41,6 +46,8 @@ namespace osu.Game.Screens.Play X = -75, }, }; + + sample = audio.Samples.Get(@"Gameplay/fountain-shoot"); } private bool isTriggered; @@ -66,6 +73,11 @@ namespace osu.Game.Screens.Play { leftFountain.Shoot(1); rightFountain.Shoot(-1); + + // Track sample channel to avoid overlapping playback + sampleChannel?.Stop(); + sampleChannel = sample?.GetChannel(); + sampleChannel?.Play(); } public partial class GameplayStarFountain : StarFountain