-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #29970 from bdach/volume-aware-sample-equality-pit…
…fall Fix argon volume-aware hitsounds not correctly playing immediately after object placement
- Loading branch information
Showing
3 changed files
with
48 additions
and
1 deletion.
There are no files selected for viewing
27 changes: 27 additions & 0 deletions
27
osu.Game.Rulesets.Taiko.Tests/VolumeAwareHitSampleInfoTest.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Copyright (c) ppy Pty Ltd <[email protected]>. Licensed under the MIT Licence. | ||
// See the LICENCE file in the repository root for full licence text. | ||
|
||
using NUnit.Framework; | ||
using osu.Game.Audio; | ||
using osu.Game.Rulesets.Taiko.Skinning.Argon; | ||
|
||
namespace osu.Game.Rulesets.Taiko.Tests | ||
{ | ||
[TestFixture] | ||
public class VolumeAwareHitSampleInfoTest | ||
{ | ||
[Test] | ||
public void TestVolumeAwareHitSampleInfoIsNotEqualToItsUnderlyingSample( | ||
[Values(HitSampleInfo.HIT_NORMAL, HitSampleInfo.HIT_CLAP)] | ||
string sample, | ||
[Values(HitSampleInfo.BANK_NORMAL, HitSampleInfo.BANK_SOFT)] | ||
string bank, | ||
[Values(30, 70, 100)] int volume) | ||
{ | ||
var underlyingSample = new HitSampleInfo(sample, bank, volume: volume); | ||
var volumeAwareSample = new VolumeAwareHitSampleInfo(underlyingSample); | ||
|
||
Assert.That(underlyingSample, Is.Not.EqualTo(volumeAwareSample)); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
// Copyright (c) ppy Pty Ltd <[email protected]>. Licensed under the MIT Licence. | ||
// See the LICENCE file in the repository root for full licence text. | ||
|
||
using System; | ||
using System.Collections.Generic; | ||
using osu.Game.Audio; | ||
|
||
|
@@ -48,5 +49,24 @@ private static string getBank(string originalBank, string sampleName, int volume | |
return originalBank; | ||
} | ||
} | ||
|
||
public override bool Equals(HitSampleInfo? other) => other is VolumeAwareHitSampleInfo && base.Equals(other); | ||
|
||
/// <remarks> | ||
/// <para> | ||
/// This override attempts to match the <see cref="Equals"/> override above, but in theory it is not strictly necessary. | ||
/// Recall that <see cref="GetHashCode"/> <a href="https://learn.microsoft.com/en-us/dotnet/api/system.object.gethashcode?view=net-8.0#notes-to-inheritors">must meet the following requirements</a>: | ||
/// </para> | ||
/// <para> | ||
/// "If two objects compare as equal, the <see cref="GetHashCode"/> method for each object must return the same value. | ||
/// However, if two objects do not compare as equal, <see cref="GetHashCode"/> methods for the two objects do not have to return different values." | ||
/// </para> | ||
/// <para> | ||
/// Making this override combine the value generated by the base <see cref="GetHashCode"/> implementation with a constant means | ||
/// that <see cref="HitSampleInfo"/> and <see cref="VolumeAwareHitSampleInfo"/> instances which have the same values of their members | ||
/// will not have equal hash codes, which is slightly more efficient when these objects are used as dictionary keys. | ||
/// </para> | ||
/// </remarks> | ||
public override int GetHashCode() => HashCode.Combine(base.GetHashCode(), 1); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters