From b4f2bea37b391eeeefc67b4c05d0312d7d119fbf Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 18 Jan 2018 19:50:26 +0900 Subject: [PATCH 1/4] Fix slider samples playing twice when additions are present --- osu.Game.Rulesets.Osu/Objects/Slider.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 40ec57d434..90dd68ebf8 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -61,6 +61,7 @@ namespace osu.Game.Rulesets.Osu.Objects public int RepeatCount { get; set; } = 1; private int stackHeight; + public override int StackHeight { get { return stackHeight; } @@ -130,6 +131,17 @@ namespace osu.Game.Rulesets.Osu.Objects var distanceProgress = d / length; var timeProgress = reversed ? 1 - distanceProgress : distanceProgress; + var firstSample = Samples.FirstOrDefault(); + var sampleList = new List(); + + if (firstSample != null) + sampleList.Add(new SampleInfo + { + Bank = firstSample?.Bank, + Volume = firstSample?.Volume ?? 100, + Name = @"slidertick", + }); + AddNested(new SliderTick { RepeatIndex = repeat, @@ -138,12 +150,7 @@ namespace osu.Game.Rulesets.Osu.Objects StackHeight = StackHeight, Scale = Scale, ComboColour = ComboColour, - Samples = new List(Samples.Select(s => new SampleInfo - { - Bank = s.Bank, - Name = @"slidertick", - Volume = s.Volume - })) + Samples = sampleList }); } } From 97884e1d05c2856100b2266dbdb7b3b3037edafe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 18 Jan 2018 19:57:49 +0900 Subject: [PATCH 2/4] Remove unnecessary null checks --- osu.Game.Rulesets.Osu/Objects/Slider.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 90dd68ebf8..4e2883bdb7 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -137,8 +137,8 @@ namespace osu.Game.Rulesets.Osu.Objects if (firstSample != null) sampleList.Add(new SampleInfo { - Bank = firstSample?.Bank, - Volume = firstSample?.Volume ?? 100, + Bank = firstSample.Bank, + Volume = firstSample.Volume, Name = @"slidertick", }); From 063767e381121040249d7525d914c7590ff467d9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 18 Jan 2018 20:37:36 +0900 Subject: [PATCH 3/4] Prioritise hit normal It's always first but not strictly guaranteed anywhere yet. --- osu.Game.Rulesets.Osu/Objects/Slider.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 4e2883bdb7..4f3c439d9d 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; using osu.Game.Rulesets.Objects; using System.Linq; +using osu.Framework.Audio.Sample; using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; @@ -131,7 +132,7 @@ namespace osu.Game.Rulesets.Osu.Objects var distanceProgress = d / length; var timeProgress = reversed ? 1 - distanceProgress : distanceProgress; - var firstSample = Samples.FirstOrDefault(); + var firstSample = Samples.FirstOrDefault(s => s.Name == SampleInfo.HIT_NORMAL) ?? Samples.FirstOrDefault(); // TODO: remove this when guaranteed sort is present for samples (https://github.com/ppy/osu/issues/1933) var sampleList = new List(); if (firstSample != null) From e2965e1682bbc7a8bd0ad53a7fdf923ea18d41f7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 18 Jan 2018 20:46:57 +0900 Subject: [PATCH 4/4] Remove unused using --- osu.Game.Rulesets.Osu/Objects/Slider.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 4f3c439d9d..2da285a434 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -7,7 +7,6 @@ using System; using System.Collections.Generic; using osu.Game.Rulesets.Objects; using System.Linq; -using osu.Framework.Audio.Sample; using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints;