diff --git a/osu.Game/Beatmaps/ControlPoints/ControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/ControlPoint.cs
index 5e538126b3..abe7e5e803 100644
--- a/osu.Game/Beatmaps/ControlPoints/ControlPoint.cs
+++ b/osu.Game/Beatmaps/ControlPoints/ControlPoint.cs
@@ -19,15 +19,7 @@ namespace osu.Game.Beatmaps.ControlPoints
public int CompareTo(ControlPoint other) => Time.CompareTo(other.Time);
- ///
- /// Whether this provides the same parametric changes as another .
- /// Basically an equality check without considering the .
- ///
- /// The to compare to.
- /// Whether this is equivalent to .
- public virtual bool EquivalentTo(ControlPoint other) => true;
-
public bool Equals(ControlPoint other)
- => EquivalentTo(other) && Time.Equals(other?.Time);
+ => Time.Equals(other?.Time);
}
}
diff --git a/osu.Game/Beatmaps/ControlPoints/DifficultyControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/DifficultyControlPoint.cs
index 013271d597..a3e3121575 100644
--- a/osu.Game/Beatmaps/ControlPoints/DifficultyControlPoint.cs
+++ b/osu.Game/Beatmaps/ControlPoints/DifficultyControlPoint.cs
@@ -1,11 +1,12 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using System;
using osuTK;
namespace osu.Game.Beatmaps.ControlPoints
{
- public class DifficultyControlPoint : ControlPoint
+ public class DifficultyControlPoint : ControlPoint, IEquatable
{
///
/// The speed multiplier at this control point.
@@ -18,9 +19,8 @@ namespace osu.Game.Beatmaps.ControlPoints
private double speedMultiplier = 1;
- public override bool EquivalentTo(ControlPoint other)
- => base.EquivalentTo(other)
- && other is DifficultyControlPoint difficulty
- && SpeedMultiplier.Equals(difficulty.SpeedMultiplier);
+ public bool Equals(DifficultyControlPoint other)
+ => base.Equals(other)
+ && SpeedMultiplier.Equals(other?.SpeedMultiplier);
}
}
diff --git a/osu.Game/Beatmaps/ControlPoints/EffectControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/EffectControlPoint.cs
index 3978b7b4b0..354d86dc13 100644
--- a/osu.Game/Beatmaps/ControlPoints/EffectControlPoint.cs
+++ b/osu.Game/Beatmaps/ControlPoints/EffectControlPoint.cs
@@ -1,9 +1,11 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using System;
+
namespace osu.Game.Beatmaps.ControlPoints
{
- public class EffectControlPoint : ControlPoint
+ public class EffectControlPoint : ControlPoint, IEquatable
{
///
/// Whether this control point enables Kiai mode.
@@ -15,10 +17,8 @@ namespace osu.Game.Beatmaps.ControlPoints
///
public bool OmitFirstBarLine;
- public override bool EquivalentTo(ControlPoint other)
- => base.EquivalentTo(other)
- && other is EffectControlPoint effect
- && KiaiMode.Equals(effect.KiaiMode)
- && OmitFirstBarLine.Equals(effect.OmitFirstBarLine);
+ public bool Equals(EffectControlPoint other)
+ => base.Equals(other)
+ && KiaiMode == other?.KiaiMode && OmitFirstBarLine == other.OmitFirstBarLine;
}
}
diff --git a/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs
index 241ce90740..4c45bef862 100644
--- a/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs
+++ b/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs
@@ -1,11 +1,12 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using System;
using osu.Game.Audio;
namespace osu.Game.Beatmaps.ControlPoints
{
- public class SampleControlPoint : ControlPoint
+ public class SampleControlPoint : ControlPoint, IEquatable
{
public const string DEFAULT_BANK = "normal";
@@ -44,10 +45,8 @@ namespace osu.Game.Beatmaps.ControlPoints
return newSampleInfo;
}
- public override bool EquivalentTo(ControlPoint other)
- => base.EquivalentTo(other)
- && other is SampleControlPoint sample
- && SampleBank.Equals(sample.SampleBank)
- && SampleVolume.Equals(sample.SampleVolume);
+ public bool Equals(SampleControlPoint other)
+ => base.Equals(other)
+ && string.Equals(SampleBank, other?.SampleBank) && SampleVolume == other?.SampleVolume;
}
}
diff --git a/osu.Game/Beatmaps/ControlPoints/TimingControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/TimingControlPoint.cs
index 9ec27bdfdf..e5815a3f3b 100644
--- a/osu.Game/Beatmaps/ControlPoints/TimingControlPoint.cs
+++ b/osu.Game/Beatmaps/ControlPoints/TimingControlPoint.cs
@@ -1,12 +1,13 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using System;
using osuTK;
using osu.Game.Beatmaps.Timing;
namespace osu.Game.Beatmaps.ControlPoints
{
- public class TimingControlPoint : ControlPoint
+ public class TimingControlPoint : ControlPoint, IEquatable
{
///
/// The time signature at this control point.
@@ -24,10 +25,8 @@ namespace osu.Game.Beatmaps.ControlPoints
private double beatLength = 1000;
- public override bool EquivalentTo(ControlPoint other)
- => base.EquivalentTo(other)
- && other is TimingControlPoint timing
- && TimeSignature.Equals(timing.TimeSignature)
- && BeatLength.Equals(timing.BeatLength);
+ public bool Equals(TimingControlPoint other)
+ => base.Equals(other)
+ && TimeSignature == other?.TimeSignature && beatLength.Equals(other.beatLength);
}
}
diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
index ad5089958c..854d3b41d6 100644
--- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
+++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs
@@ -189,7 +189,7 @@ namespace osu.Game.Beatmaps.Formats
Foreground = 3
}
- internal class LegacySampleControlPoint : SampleControlPoint
+ internal class LegacySampleControlPoint : SampleControlPoint, IEquatable
{
public int CustomSampleBank;
@@ -203,10 +203,9 @@ namespace osu.Game.Beatmaps.Formats
return baseInfo;
}
- public override bool EquivalentTo(ControlPoint other)
- => base.EquivalentTo(other)
- && other is LegacySampleControlPoint legacy
- && CustomSampleBank == legacy.CustomSampleBank;
+ public bool Equals(LegacySampleControlPoint other)
+ => base.Equals(other)
+ && CustomSampleBank == other?.CustomSampleBank;
}
}
}