Refactor volume control to load asynchronously.

This commit is contained in:
Dean Herbert
2016-11-23 16:12:21 +09:00
parent 0c841cffdd
commit 20ae8df2bd
2 changed files with 26 additions and 21 deletions

View File

@ -19,9 +19,6 @@ namespace osu.Game.Graphics.UserInterface.Volume
private VolumeMeter volumeMeterMaster; private VolumeMeter volumeMeterMaster;
private FlowContainer content;
protected override Container<Drawable> Content => content;
private void volumeChanged(object sender, EventArgs e) private void volumeChanged(object sender, EventArgs e)
{ {
Show(); Show();
@ -34,14 +31,23 @@ namespace osu.Game.Graphics.UserInterface.Volume
Anchor = Anchor.BottomRight; Anchor = Anchor.BottomRight;
Origin = Anchor.BottomRight; Origin = Anchor.BottomRight;
AddInternal(content = new FlowContainer Children = new Drawable[]
{ {
AutoSizeAxes = Axes.Both, new FlowContainer
Anchor = Anchor.BottomRight, {
Origin = Anchor.BottomRight, AutoSizeAxes = Axes.Both,
Margin = new MarginPadding { Left = 10, Right = 10, Top = 30, Bottom = 30 }, Anchor = Anchor.BottomRight,
Spacing = new Vector2(15, 0), Origin = Anchor.BottomRight,
}); Margin = new MarginPadding { Left = 10, Right = 10, Top = 30, Bottom = 30 },
Spacing = new Vector2(15, 0),
Children = new Drawable[]
{
volumeMeterMaster = new VolumeMeter("Master"),
volumeMeterEffect = new VolumeMeter("Effects"),
volumeMeterMusic = new VolumeMeter("Music")
}
}
};
} }
protected override void LoadComplete() protected override void LoadComplete()
@ -52,12 +58,9 @@ namespace osu.Game.Graphics.UserInterface.Volume
VolumeSample.ValueChanged += volumeChanged; VolumeSample.ValueChanged += volumeChanged;
VolumeTrack.ValueChanged += volumeChanged; VolumeTrack.ValueChanged += volumeChanged;
Add(new[] volumeMeterMaster.Bindable = VolumeGlobal;
{ volumeMeterEffect.Bindable = VolumeSample;
volumeMeterMaster = new VolumeMeter("Master", VolumeGlobal), volumeMeterMusic.Bindable = VolumeTrack;
new VolumeMeter("Effects", VolumeSample),
new VolumeMeter("Music", VolumeTrack)
});
} }
protected override void Dispose(bool isDisposing) protected override void Dispose(bool isDisposing)
@ -81,6 +84,9 @@ namespace osu.Game.Graphics.UserInterface.Volume
ScheduledDelegate popOutDelegate; ScheduledDelegate popOutDelegate;
private VolumeMeter volumeMeterEffect;
private VolumeMeter volumeMeterMusic;
protected override void PopIn() protected override void PopIn()
{ {
ClearTransformations(); ClearTransformations();

View File

@ -13,11 +13,10 @@ namespace osu.Game.Graphics.UserInterface.Volume
internal class VolumeMeter : Container internal class VolumeMeter : Container
{ {
private Box meterFill; private Box meterFill;
private BindableDouble volume; public BindableDouble Bindable;
public VolumeMeter(string meterName, BindableDouble volume) public VolumeMeter(string meterName)
{ {
this.volume = volume;
Size = new Vector2(40, 180); Size = new Vector2(40, 180);
Children = new Drawable[] Children = new Drawable[]
{ {
@ -65,10 +64,10 @@ namespace osu.Game.Graphics.UserInterface.Volume
public double Volume public double Volume
{ {
get { return volume.Value; } get { return Bindable.Value; }
private set private set
{ {
volume.Value = value; Bindable.Value = value;
updateFill(); updateFill();
} }
} }