Add adjustments on channel creation if there is

This commit is contained in:
iiSaLMaN 2019-08-29 15:32:21 +03:00
parent 3d62003382
commit ec6a40af33
1 changed files with 17 additions and 2 deletions

View File

@ -15,6 +15,9 @@ namespace osu.Game.Skinning
public class SkinnableSound : SkinReloadableDrawable
{
private readonly ISampleInfo[] hitSamples;
private readonly List<(AdjustableProperty, BindableDouble)> adjustments = new List<(AdjustableProperty, BindableDouble)>();
private SampleChannel[] channels;
private AudioManager audio;
@ -51,8 +54,17 @@ public bool Looping
public void Play() => channels?.ForEach(c => c.Play());
public void Stop() => channels?.ForEach(c => c.Stop());
public void AddAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => channels?.ForEach(c => c.AddAdjustment(type, adjustBindable));
public void RemoveAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => channels?.ForEach(c => c.RemoveAdjustment(type, adjustBindable));
public void AddAdjustment(AdjustableProperty type, BindableDouble adjustBindable)
{
adjustments.Add((type, adjustBindable));
channels?.ForEach(c => c.AddAdjustment(type, adjustBindable));
}
public void RemoveAdjustment(AdjustableProperty type, BindableDouble adjustBindable)
{
adjustments.Remove((type, adjustBindable));
channels?.ForEach(c => c.RemoveAdjustment(type, adjustBindable));
}
public override bool IsPresent => Scheduler.HasPendingTasks;
@ -71,6 +83,9 @@ protected override void SkinChanged(ISkinSource skin, bool allowFallback)
{
ch.Looping = looping;
ch.Volume.Value = s.Volume / 100.0;
foreach (var adjustment in adjustments)
ch.AddAdjustment(adjust.Item1, adjust.Item2);
}
return ch;