From ac9f0ccb48bd88e78e4e234340e60f8e6de145e5 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 21 Apr 2017 13:51:40 +0900 Subject: [PATCH] Fix hit normals always being played, regardless of sound type. --- .../Objects/Legacy/HitObjectParser.cs | 82 ++++++++++--------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs index c915e67ead..5031128a79 100644 --- a/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs @@ -108,43 +108,8 @@ namespace osu.Game.Rulesets.Objects.Legacy result.StartTime = Convert.ToDouble(split[2], CultureInfo.InvariantCulture); var soundType = (LegacySoundType)int.Parse(split[4]); - - result.Samples.Add(new SampleInfo - { - Bank = normalSampleBank, - Name = SampleInfo.HIT_NORMAL, - Volume = sampleVolume - }); - - if ((soundType & LegacySoundType.Finish) > 0) - { - result.Samples.Add(new SampleInfo - { - Bank = addSampleBank, - Name = SampleInfo.HIT_FINISH, - Volume = sampleVolume - }); - } - - if ((soundType & LegacySoundType.Whistle) > 0) - { - result.Samples.Add(new SampleInfo - { - Bank = addSampleBank, - Name = SampleInfo.HIT_WHISTLE, - Volume = sampleVolume - }); - } - - if ((soundType & LegacySoundType.Clap) > 0) - { - result.Samples.Add(new SampleInfo - { - Bank = addSampleBank, - Name = SampleInfo.HIT_CLAP, - Volume = sampleVolume - }); - } + result.Samples = convertSoundType(soundType, normalSampleBank, addSampleBank); + result.Samples.ForEach(s => s.Volume = sampleVolume); return result; } @@ -202,6 +167,49 @@ namespace osu.Game.Rulesets.Objects.Legacy /// The hit object. protected abstract HitObject CreateSpinner(Vector2 position, double endTime); + private List convertSoundType(LegacySoundType type, string normalSampleBank, string addSampleBank) + { + List soundTypes = new List(); + + if ((type & LegacySoundType.Normal) > 0) + { + soundTypes.Add(new SampleInfo + { + Bank = normalSampleBank, + Name = SampleInfo.HIT_NORMAL + }); + } + + if ((type & LegacySoundType.Finish) > 0) + { + soundTypes.Add(new SampleInfo + { + Bank = addSampleBank, + Name = SampleInfo.HIT_FINISH + }); + } + + if ((type & LegacySoundType.Whistle) > 0) + { + soundTypes.Add(new SampleInfo + { + Bank = addSampleBank, + Name = SampleInfo.HIT_WHISTLE + }); + } + + if ((type & LegacySoundType.Clap) > 0) + { + soundTypes.Add(new SampleInfo + { + Bank = addSampleBank, + Name = SampleInfo.HIT_CLAP + }); + } + + return soundTypes; + } + [Flags] private enum LegacySoundType {