mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 15:22:55 +08:00
Add RulesetInfo
hashcode implementation and tidy up equality
This commit is contained in:
parent
c33e163178
commit
5cbd731864
@ -255,7 +255,15 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
{
|
||||
prepareTestAPI(true);
|
||||
|
||||
createPlayerTest(false, createRuleset: () => new OsuRuleset { RulesetInfo = { OnlineID = rulesetId ?? -1 } });
|
||||
createPlayerTest(false, createRuleset: () => new OsuRuleset
|
||||
{
|
||||
RulesetInfo =
|
||||
{
|
||||
Name = "custom",
|
||||
ShortName = $"custom{rulesetId}",
|
||||
OnlineID = rulesetId ?? -1
|
||||
}
|
||||
});
|
||||
|
||||
AddUntilStep("wait for token request", () => Player.TokenCreationRequested);
|
||||
|
||||
|
@ -47,14 +47,25 @@ namespace osu.Game.Rulesets
|
||||
|
||||
public bool Available { get; set; }
|
||||
|
||||
public bool Equals(RulesetInfo? other) => other != null
|
||||
&& OnlineID == other.OnlineID
|
||||
&& Available == other.Available
|
||||
&& Name == other.Name
|
||||
&& InstantiationInfo == other.InstantiationInfo;
|
||||
public bool Equals(RulesetInfo? other)
|
||||
{
|
||||
if (ReferenceEquals(this, other)) return true;
|
||||
if (other == null) return false;
|
||||
|
||||
return ShortName == other.ShortName;
|
||||
}
|
||||
|
||||
public bool Equals(IRulesetInfo? other) => other is RulesetInfo b && Equals(b);
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
// Importantly, ignore the underlying realm hash code, as it will usually not match.
|
||||
var hashCode = new HashCode();
|
||||
// ReSharper disable once NonReadonlyMemberInGetHashCode
|
||||
hashCode.Add(ShortName);
|
||||
return hashCode.ToHashCode();
|
||||
}
|
||||
|
||||
public override string ToString() => Name;
|
||||
|
||||
public RulesetInfo Clone() => new RulesetInfo
|
||||
|
Loading…
Reference in New Issue
Block a user