1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-15 19:42:56 +08:00

Remove BPM slider

This commit is contained in:
CenTdemeern1 2022-03-31 20:11:07 +02:00
parent 46be6bcadc
commit 52d723aaa6

View File

@ -13,7 +13,6 @@ namespace osu.Game.Screens.Edit.Timing
{ {
internal class TimingSection : Section<TimingControlPoint> internal class TimingSection : Section<TimingControlPoint>
{ {
private SettingsSlider<double> bpmSlider;
private LabelledTimeSignature timeSignature; private LabelledTimeSignature timeSignature;
private BPMTextBox bpmTextEntry; private BPMTextBox bpmTextEntry;
@ -23,7 +22,6 @@ namespace osu.Game.Screens.Edit.Timing
Flow.AddRange(new Drawable[] Flow.AddRange(new Drawable[]
{ {
bpmTextEntry = new BPMTextBox(), bpmTextEntry = new BPMTextBox(),
bpmSlider = new BPMSlider(),
timeSignature = new LabelledTimeSignature timeSignature = new LabelledTimeSignature
{ {
Label = "Time Signature" Label = "Time Signature"
@ -35,9 +33,6 @@ namespace osu.Game.Screens.Edit.Timing
{ {
if (point.NewValue != null) if (point.NewValue != null)
{ {
bpmSlider.Current = point.NewValue.BeatLengthBindable;
bpmSlider.Current.BindValueChanged(_ => ChangeHandler?.SaveState());
bpmTextEntry.Bindable = point.NewValue.BeatLengthBindable; bpmTextEntry.Bindable = point.NewValue.BeatLengthBindable;
// no need to hook change handler here as it's the same bindable as above // no need to hook change handler here as it's the same bindable as above
@ -102,51 +97,6 @@ namespace osu.Game.Screens.Edit.Timing
} }
} }
private class BPMSlider : SettingsSlider<double>
{
private const double sane_minimum = 60;
private const double sane_maximum = 240;
private readonly BindableNumber<double> beatLengthBindable = new TimingControlPoint().BeatLengthBindable;
private readonly BindableDouble bpmBindable = new BindableDouble(60000 / TimingControlPoint.DEFAULT_BEAT_LENGTH)
{
MinValue = sane_minimum,
MaxValue = sane_maximum,
};
public BPMSlider()
{
beatLengthBindable.BindValueChanged(beatLength => updateCurrent(beatLengthToBpm(beatLength.NewValue)), true);
bpmBindable.BindValueChanged(bpm => beatLengthBindable.Value = beatLengthToBpm(bpm.NewValue));
base.Current = bpmBindable;
TransferValueOnCommit = true;
}
public override Bindable<double> Current
{
get => base.Current;
set
{
// incoming will be beat length, not bpm
beatLengthBindable.UnbindBindings();
beatLengthBindable.BindTo(value);
}
}
private void updateCurrent(double newValue)
{
// we use a more sane range for the slider display unless overridden by the user.
// if a value comes in outside our range, we should expand temporarily.
bpmBindable.MinValue = Math.Min(newValue, sane_minimum);
bpmBindable.MaxValue = Math.Max(newValue, sane_maximum);
bpmBindable.Value = newValue;
}
}
private static double beatLengthToBpm(double beatLength) => 60000 / beatLength; private static double beatLengthToBpm(double beatLength) => 60000 / beatLength;
} }
} }