From 40e750f309eb8d9f61d4ee16d44c8d5fa5131931 Mon Sep 17 00:00:00 2001 From: FreezyLemon Date: Fri, 8 Dec 2017 08:32:16 +0100 Subject: [PATCH] Added sample preloading and playing --- osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs index c4210dd261..eda5c75906 100644 --- a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs @@ -22,6 +22,7 @@ using osu.Framework.Audio; using osu.Framework.Audio.Sample; using System.Collections.Generic; using osu.Game.Audio; +using System; namespace osu.Game.Rulesets.Taiko.UI { @@ -61,7 +62,7 @@ namespace osu.Game.Rulesets.Taiko.UI private readonly Box background; private ControlPointInfo controlPointInfo; - private IEnumerable allSamples; + private SortedDictionary> allSamples; private AudioManager audio; public TaikoPlayfield(ControlPointInfo controlPointInfo) @@ -211,7 +212,9 @@ namespace osu.Game.Rulesets.Taiko.UI foreach (var soundPoint in controlPointInfo.SoundPoints) { - SampleInfo.FromSoundPoint(soundPoint).GetChannel(audio.Sample); + var normalSample = SampleInfo.FromSoundPoint(soundPoint).GetChannel(audio.Sample); + var clapSample = SampleInfo.FromSoundPoint(soundPoint, SampleInfo.HIT_CLAP).GetChannel(audio.Sample); + allSamples.Add(soundPoint.Time, new Tuple(normalSample, clapSample)); } overlayBackgroundContainer.BorderColour = colours.Gray0; @@ -279,7 +282,13 @@ namespace osu.Game.Rulesets.Taiko.UI public bool OnPressed(TaikoAction action) { - var soundPoint = controlPointInfo.SoundPointAt(Time.Current); + if (!allSamples.TryGetValue(controlPointInfo.SoundPointAt(Clock.CurrentTime).Time, out Tuple samples)) + throw new InvalidOperationException("Current sample set not found."); + + if (action == TaikoAction.LeftCentre || action == TaikoAction.RightCentre) + samples.Item1.Play(); + else + samples.Item2.Play(); return true; }