Merge branch 'bindable-control-point-properties' into editor-timing-screen-2

This commit is contained in:
Dean Herbert 2019-10-28 14:46:38 +09:00
commit 490f87cad3
5 changed files with 90 additions and 20 deletions

View File

@ -1,24 +1,31 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using osuTK; using osu.Framework.Bindables;
namespace osu.Game.Beatmaps.ControlPoints namespace osu.Game.Beatmaps.ControlPoints
{ {
public class DifficultyControlPoint : ControlPoint public class DifficultyControlPoint : ControlPoint
{ {
/// <summary>
/// The speed multiplier at this control point.
/// </summary>
public readonly BindableDouble SpeedMultiplierBindable = new BindableDouble(1)
{
MinValue = 0.1,
MaxValue = 10
};
/// <summary> /// <summary>
/// The speed multiplier at this control point. /// The speed multiplier at this control point.
/// </summary> /// </summary>
public double SpeedMultiplier public double SpeedMultiplier
{ {
get => speedMultiplier; get => SpeedMultiplierBindable.Value;
set => speedMultiplier = MathHelper.Clamp(value, 0.1, 10); set => SpeedMultiplierBindable.Value = value;
} }
private double speedMultiplier = 1;
public override bool EquivalentTo(ControlPoint other) => public override bool EquivalentTo(ControlPoint other) =>
other is DifficultyControlPoint otherTyped && otherTyped.SpeedMultiplier.Equals(speedMultiplier); other is DifficultyControlPoint otherTyped && otherTyped.SpeedMultiplier.Equals(SpeedMultiplier);
} }
} }

View File

@ -1,19 +1,39 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using osu.Framework.Bindables;
namespace osu.Game.Beatmaps.ControlPoints namespace osu.Game.Beatmaps.ControlPoints
{ {
public class EffectControlPoint : ControlPoint public class EffectControlPoint : ControlPoint
{ {
/// <summary> /// <summary>
/// Whether this control point enables Kiai mode. /// Whether the first bar line of this control point is ignored.
/// </summary> /// </summary>
public bool KiaiMode; public readonly BindableBool OmitFirstBarLineBindable = new BindableBool();
/// <summary> /// <summary>
/// Whether the first bar line of this control point is ignored. /// Whether the first bar line of this control point is ignored.
/// </summary> /// </summary>
public bool OmitFirstBarLine; public bool OmitFirstBarLine
{
get => OmitFirstBarLineBindable.Value;
set => OmitFirstBarLineBindable.Value = value;
}
/// <summary>
/// Whether this control point enables Kiai mode.
/// </summary>
public readonly BindableBool KiaiModeBindable = new BindableBool();
/// <summary>
/// Whether this control point enables Kiai mode.
/// </summary>
public bool KiaiMode
{
get => KiaiModeBindable.Value;
set => KiaiModeBindable.Value = value;
}
public override bool EquivalentTo(ControlPoint other) => public override bool EquivalentTo(ControlPoint other) =>
other is EffectControlPoint otherTyped && other is EffectControlPoint otherTyped &&

View File

@ -1,6 +1,7 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using osu.Framework.Bindables;
using osu.Game.Audio; using osu.Game.Audio;
namespace osu.Game.Beatmaps.ControlPoints namespace osu.Game.Beatmaps.ControlPoints
@ -12,12 +13,34 @@ namespace osu.Game.Beatmaps.ControlPoints
/// <summary> /// <summary>
/// The default sample bank at this control point. /// The default sample bank at this control point.
/// </summary> /// </summary>
public string SampleBank = DEFAULT_BANK; public readonly Bindable<string> SampleBankBindable = new Bindable<string>(DEFAULT_BANK);
/// <summary>
/// The speed multiplier at this control point.
/// </summary>
public string SampleBank
{
get => SampleBankBindable.Value;
set => SampleBankBindable.Value = value;
}
/// <summary>
/// The default sample bank at this control point.
/// </summary>
public readonly BindableInt SampleVolumeBindable = new BindableInt(100)
{
MinValue = 0,
MaxValue = 100
};
/// <summary> /// <summary>
/// The default sample volume at this control point. /// The default sample volume at this control point.
/// </summary> /// </summary>
public int SampleVolume = 100; public int SampleVolume
{
get => SampleVolumeBindable.Value;
set => SampleVolumeBindable.Value = value;
}
/// <summary> /// <summary>
/// Create a SampleInfo based on the sample settings in this control point. /// Create a SampleInfo based on the sample settings in this control point.

View File

@ -1,7 +1,7 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using osuTK; using osu.Framework.Bindables;
using osu.Game.Beatmaps.Timing; using osu.Game.Beatmaps.Timing;
namespace osu.Game.Beatmaps.ControlPoints namespace osu.Game.Beatmaps.ControlPoints
@ -11,17 +11,35 @@ namespace osu.Game.Beatmaps.ControlPoints
/// <summary> /// <summary>
/// The time signature at this control point. /// The time signature at this control point.
/// </summary> /// </summary>
public TimeSignatures TimeSignature = TimeSignatures.SimpleQuadruple; public readonly Bindable<TimeSignatures> TimeSignatureBindable = new Bindable<TimeSignatures>(TimeSignatures.SimpleQuadruple);
/// <summary>
/// The time signature at this control point.
/// </summary>
public TimeSignatures TimeSignature
{
get => TimeSignatureBindable.Value;
set => TimeSignatureBindable.Value = value;
}
public const double DEFAULT_BEAT_LENGTH = 1000; public const double DEFAULT_BEAT_LENGTH = 1000;
/// <summary> /// <summary>
/// The beat length at this control point. /// The beat length at this control point.
/// </summary> /// </summary>
public virtual double BeatLength public readonly BindableDouble BeatLengthBindable = new BindableDouble(DEFAULT_BEAT_LENGTH)
{ {
get => beatLength; MinValue = 6,
set => beatLength = MathHelper.Clamp(value, 6, 60000); MaxValue = 60000
};
/// <summary>
/// The beat length at this control point.
/// </summary>
public double BeatLength
{
get => BeatLengthBindable.Value;
set => BeatLengthBindable.Value = value;
} }
/// <summary> /// <summary>
@ -29,10 +47,8 @@ namespace osu.Game.Beatmaps.ControlPoints
/// </summary> /// </summary>
public double BPM => 60000 / BeatLength; public double BPM => 60000 / BeatLength;
private double beatLength = DEFAULT_BEAT_LENGTH;
public override bool EquivalentTo(ControlPoint other) => public override bool EquivalentTo(ControlPoint other) =>
other is TimingControlPoint otherTyped other is TimingControlPoint otherTyped
&& TimeSignature == otherTyped.TimeSignature && beatLength.Equals(otherTyped.beatLength); && TimeSignature == otherTyped.TimeSignature && BeatLength.Equals(otherTyped.BeatLength);
} }
} }

View File

@ -32,7 +32,11 @@ namespace osu.Game.Beatmaps.Formats
private class LegacyDifficultyCalculatorControlPoint : TimingControlPoint private class LegacyDifficultyCalculatorControlPoint : TimingControlPoint
{ {
public override double BeatLength { get; set; } = DEFAULT_BEAT_LENGTH; public LegacyDifficultyCalculatorControlPoint()
{
BeatLengthBindable.MinValue = double.MinValue;
BeatLengthBindable.MaxValue = double.MaxValue;
}
} }
} }
} }