1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 15:27:26 +08:00

Add new display for sample row attribute

This commit is contained in:
Dean Herbert 2021-04-19 16:10:37 +09:00
parent 6465a72060
commit ec249a0edb
2 changed files with 62 additions and 1 deletions

View File

@ -147,7 +147,7 @@ namespace osu.Game.Screens.Edit.Timing
).Trim(), colour);
case SampleControlPoint sample:
return new EmptyRowAttribute("sample", () => $"{sample.SampleBank} {sample.SampleVolume}%", colour);
return new SampleRowAttribute(sample);
}
return null;

View File

@ -0,0 +1,61 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
namespace osu.Game.Screens.Edit.Timing.RowAttributes
{
public class SampleRowAttribute : RowAttribute
{
private AttributeBubbledWord sampleText;
private OsuSpriteText volumeText;
private readonly Bindable<string> sampleBank;
private readonly BindableNumber<int> volume;
public SampleRowAttribute(SampleControlPoint sample)
: base(sample, "sample")
{
sampleBank = sample.SampleBankBindable.GetBoundCopy();
volume = sample.SampleVolumeBindable.GetBoundCopy();
}
[BackgroundDependencyLoader]
private void load()
{
AttributeProgressBar progress;
Content.AddRange(new Drawable[]
{
volumeText = new OsuSpriteText
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
Width = 30,
Font = OsuFont.GetFont(size: EditorTable.TEXT_SIZE, weight: FontWeight.Regular),
},
progress = new AttributeProgressBar(Point),
sampleText = new AttributeBubbledWord(Point),
});
volume.BindValueChanged(vol =>
{
progress.Current.Value = vol.NewValue / 100f;
updateText();
}, true);
sampleBank.BindValueChanged(_ => updateText(), true);
}
private void updateText()
{
volumeText.Text = $"{volume.Value}%";
sampleText.Text = $"{sampleBank.Value}";
}
}
}