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

View File

@ -83,26 +83,24 @@ namespace osu.Game.Rulesets.Objects.Drawables
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(AudioManager audio) private void load(AudioManager audio)
{
foreach (SampleInfo sample in HitObject.Samples)
{ {
if (HitObject.SampleControlPoint == null) if (HitObject.SampleControlPoint == null)
throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)} must always have an attached {nameof(HitObject.SampleControlPoint)}."); throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)} must always have an attached {nameof(HitObject.SampleControlPoint)}.");
var bank = sample.Bank; foreach (SampleInfo s in HitObject.Samples)
if (string.IsNullOrEmpty(bank)) {
bank = HitObject.SampleControlPoint.SampleBank; 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; SampleChannel channel = localSampleInfo.GetChannel(audio.Sample);
if (volume == 0)
volume = HitObject.SampleControlPoint.SampleVolume;
SampleChannel channel = audio.Sample.Get($@"Gameplay/{bank}-{sample.Name}");
if (channel == null) if (channel == null)
continue; continue;
channel.Volume.Value = volume;
Samples.Add(channel); Samples.Add(channel);
} }
} }