1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 12:33:01 +08:00

Layer playback of beatmap-changed and random-beatmap samples

This commit is contained in:
Jamie Taylor 2022-02-04 15:42:52 +09:00
parent 002cc7261b
commit 0f48c0131c
No known key found for this signature in database
GPG Key ID: 2ACFA8B6370B8C8C
2 changed files with 7 additions and 18 deletions

View File

@ -154,6 +154,7 @@ namespace osu.Game.Screens.Select
private readonly DrawablePool<DrawableCarouselBeatmapSet> setPool = new DrawablePool<DrawableCarouselBeatmapSet>(100); private readonly DrawablePool<DrawableCarouselBeatmapSet> setPool = new DrawablePool<DrawableCarouselBeatmapSet>(100);
private Sample spinSample; private Sample spinSample;
private Sample randomSelectSample;
private int visibleSetsCount; private int visibleSetsCount;
@ -178,6 +179,7 @@ namespace osu.Game.Screens.Select
private void load(OsuConfigManager config, AudioManager audio) private void load(OsuConfigManager config, AudioManager audio)
{ {
spinSample = audio.Samples.Get("SongSelect/random-spin"); spinSample = audio.Samples.Get("SongSelect/random-spin");
randomSelectSample = audio.Samples.Get(@"SongSelect/select-random");
config.BindWith(OsuSetting.RandomSelectAlgorithm, RandomAlgorithm); config.BindWith(OsuSetting.RandomSelectAlgorithm, RandomAlgorithm);
config.BindWith(OsuSetting.SongSelectRightMouseScroll, RightClickScrollingEnabled); config.BindWith(OsuSetting.SongSelectRightMouseScroll, RightClickScrollingEnabled);
@ -495,6 +497,8 @@ namespace osu.Game.Screens.Select
var chan = spinSample.GetChannel(); var chan = spinSample.GetChannel();
chan.Frequency.Value = 1f + Math.Min(1f, distance / visibleSetsCount); chan.Frequency.Value = 1f + Math.Min(1f, distance / visibleSetsCount);
chan.Play(); chan.Play();
randomSelectSample?.Play();
} }
private void select(CarouselItem item) private void select(CarouselItem item)

View File

@ -100,7 +100,6 @@ namespace osu.Game.Screens.Select
private Sample sampleChangeDifficulty; private Sample sampleChangeDifficulty;
private Sample sampleChangeBeatmap; private Sample sampleChangeBeatmap;
private Sample sampleRandomBeatmap;
private Container carouselContainer; private Container carouselContainer;
@ -110,8 +109,6 @@ namespace osu.Game.Screens.Select
private double audioFeedbackLastPlaybackTime; private double audioFeedbackLastPlaybackTime;
private bool randomSelectionPending;
[Resolved] [Resolved]
private MusicController music { get; set; } private MusicController music { get; set; }
@ -291,7 +288,6 @@ namespace osu.Game.Screens.Select
sampleChangeDifficulty = audio.Samples.Get(@"SongSelect/select-difficulty"); sampleChangeDifficulty = audio.Samples.Get(@"SongSelect/select-difficulty");
sampleChangeBeatmap = audio.Samples.Get(@"SongSelect/select-expand"); sampleChangeBeatmap = audio.Samples.Get(@"SongSelect/select-expand");
sampleRandomBeatmap = audio.Samples.Get(@"SongSelect/select-random");
SampleConfirm = audio.Samples.Get(@"SongSelect/confirm-selection"); SampleConfirm = audio.Samples.Get(@"SongSelect/confirm-selection");
if (dialogOverlay != null) if (dialogOverlay != null)
@ -319,16 +315,8 @@ namespace osu.Game.Screens.Select
(new FooterButtonMods { Current = Mods }, ModSelect), (new FooterButtonMods { Current = Mods }, ModSelect),
(new FooterButtonRandom (new FooterButtonRandom
{ {
NextRandom = () => NextRandom = () => Carousel.SelectNextRandom(),
{ PreviousRandom = Carousel.SelectPreviousRandom
randomSelectionPending = true;
Carousel.SelectNextRandom();
},
PreviousRandom = () =>
{
randomSelectionPending = true;
Carousel.SelectPreviousRandom();
}
}, null), }, null),
(new FooterButtonOptions(), BeatmapOptions) (new FooterButtonOptions(), BeatmapOptions)
}; };
@ -498,9 +486,7 @@ namespace osu.Game.Screens.Select
{ {
if (beatmap != null && beatmapInfoPrevious != null && Time.Current - audioFeedbackLastPlaybackTime >= 50) if (beatmap != null && beatmapInfoPrevious != null && Time.Current - audioFeedbackLastPlaybackTime >= 50)
{ {
if (randomSelectionPending) if (beatmap.BeatmapSet?.ID == beatmapInfoPrevious.BeatmapSet?.ID)
sampleRandomBeatmap.Play();
else if (beatmap.BeatmapSet?.ID == beatmapInfoPrevious.BeatmapSet?.ID)
sampleChangeDifficulty.Play(); sampleChangeDifficulty.Play();
else else
sampleChangeBeatmap.Play(); sampleChangeBeatmap.Play();
@ -508,7 +494,6 @@ namespace osu.Game.Screens.Select
audioFeedbackLastPlaybackTime = Time.Current; audioFeedbackLastPlaybackTime = Time.Current;
} }
randomSelectionPending = false;
beatmapInfoPrevious = beatmap; beatmapInfoPrevious = beatmap;
} }