Simplify DrawableHitObject's sample load code

This commit is contained in:
Dean Herbert 2017-12-23 17:20:14 +09:00
parent cd8e8c8323
commit 2db68df999
2 changed files with 12 additions and 17 deletions

View File

@ -2,9 +2,7 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
using osu.Framework.Audio;
using osu.Framework.Audio.Sample;
using osu.Framework.Configuration;
namespace osu.Game.Audio
{
@ -19,8 +17,7 @@ public class SampleInfo
public SampleChannel GetChannel(SampleManager manager)
{
var channel = manager.Get($"Gameplay/{Bank}-{Name}");
channel.AddAdjustment(AdjustableProperty.Volume, new BindableDouble(Volume / 100.0));
channel.Volume.Value = Volume / 100.0;
return channel;
}

View File

@ -83,26 +83,24 @@ protected DrawableHitObject(TObject hitObject)
[BackgroundDependencyLoader]
private void load(AudioManager audio)
{
foreach (SampleInfo sample in HitObject.Samples)
{
if (HitObject.SampleControlPoint == null)
throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)} must always have an attached {nameof(HitObject.SampleControlPoint)}.");
var bank = sample.Bank;
if (string.IsNullOrEmpty(bank))
bank = HitObject.SampleControlPoint.SampleBank;
foreach (SampleInfo s in HitObject.Samples)
{
SampleInfo localSampleInfo = new SampleInfo
{
Bank = s.Bank ?? HitObject.SampleControlPoint.SampleBank,
Name = s.Name,
Volume = s.Volume > 0 ? s.Volume : HitObject.SampleControlPoint.SampleVolume
};
int volume = sample.Volume;
if (volume == 0)
volume = HitObject.SampleControlPoint.SampleVolume;
SampleChannel channel = audio.Sample.Get($@"Gameplay/{bank}-{sample.Name}");
SampleChannel channel = localSampleInfo.GetChannel(audio.Sample);
if (channel == null)
continue;
channel.Volume.Value = volume;
Samples.Add(channel);
}
}