diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs
index 738b7f14f3..962e0fb362 100644
--- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs
@@ -214,37 +214,6 @@ namespace osu.Game.Tests.Visual.SongSelect
AddAssert("start not requested", () => !startRequested);
}
- [Test]
- public void TestAddNewBeatmapWhileSelectingRandom()
- {
- const int test_count = 10;
- int beatmapChangedCount = 0;
- int debounceCount = 0;
- createSongSelect();
- AddStep("Setup counters", () =>
- {
- beatmapChangedCount = 0;
- debounceCount = 0;
- songSelect.Carousel.SelectionChanged += _ => beatmapChangedCount++;
- });
- AddRepeatStep($"Create beatmaps {test_count} times", () =>
- {
- importForRuleset(0);
-
- Scheduler.AddDelayed(() =>
- {
- // Wait for debounce
- songSelect.Carousel.SelectNextRandom();
- ++debounceCount;
- }, 400);
- }, test_count);
-
- AddUntilStep("Debounce limit reached", () => debounceCount == test_count);
-
- // The selected beatmap should have changed an additional 2 times since both initially loading songselect and the first import also triggers selectionChanged
- AddAssert($"Beatmap changed {test_count + 2} times", () => beatmapChangedCount == test_count + 2);
- }
-
[Test]
public void TestHideSetSelectsCorrectBeatmap()
{
diff --git a/osu.Game/Graphics/UserInterface/OsuButton.cs b/osu.Game/Graphics/UserInterface/OsuButton.cs
index 494d4e4262..7a27f825f6 100644
--- a/osu.Game/Graphics/UserInterface/OsuButton.cs
+++ b/osu.Game/Graphics/UserInterface/OsuButton.cs
@@ -17,11 +17,11 @@ namespace osu.Game.Graphics.UserInterface
///
/// A button with added default sound effects.
///
- public abstract class OsuButton : Button
+ public class OsuButton : Button
{
private Box hover;
- protected OsuButton()
+ public OsuButton()
{
Height = 40;
diff --git a/osu.Game/Online/API/Requests/Responses/APIChangelogBuild.cs b/osu.Game/Online/API/Requests/Responses/APIChangelogBuild.cs
index 40f1b791f9..36407c7b0e 100644
--- a/osu.Game/Online/API/Requests/Responses/APIChangelogBuild.cs
+++ b/osu.Game/Online/API/Requests/Responses/APIChangelogBuild.cs
@@ -31,9 +31,9 @@ namespace osu.Game.Online.API.Requests.Responses
public List ChangelogEntries { get; set; }
[JsonProperty("versions")]
- public VersionNatigation Versions { get; set; }
+ public VersionNavigation Versions { get; set; }
- public class VersionNatigation
+ public class VersionNavigation
{
[JsonProperty("next")]
public APIChangelogBuild Next { get; set; }
diff --git a/osu.Game/Online/Chat/Message.cs b/osu.Game/Online/Chat/Message.cs
index 62f20daddf..2e41038a59 100644
--- a/osu.Game/Online/Chat/Message.cs
+++ b/osu.Game/Online/Chat/Message.cs
@@ -13,10 +13,6 @@ namespace osu.Game.Online.Chat
[JsonProperty(@"message_id")]
public readonly long? Id;
- //todo: this should be inside sender.
- [JsonProperty(@"sender_id")]
- public long UserId;
-
[JsonProperty(@"channel_id")]
public long ChannelId;
diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index d5fbcdfee3..f38eecef81 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -181,7 +181,7 @@ namespace osu.Game
configSkin.ValueChanged += skinId => SkinManager.CurrentSkinInfo.Value = SkinManager.Query(s => s.ID == skinId.NewValue) ?? SkinInfo.Default;
configSkin.TriggerChange();
- LocalConfig.BindWith(OsuSetting.VolumeInactive, inactiveVolumeAdjust);
+ LocalConfig.BindWith(OsuSetting.VolumeInactive, userInactiveVolume);
IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true);
}
@@ -686,16 +686,28 @@ namespace osu.Game
return false;
}
- private readonly BindableDouble inactiveVolumeAdjust = new BindableDouble();
+ #region Inactive audio dimming
+
+ private readonly BindableDouble userInactiveVolume = new BindableDouble();
+
+ private readonly BindableDouble inactiveVolumeFade = new BindableDouble();
private void updateActiveState(bool isActive)
{
if (isActive)
- Audio.RemoveAdjustment(AdjustableProperty.Volume, inactiveVolumeAdjust);
+ {
+ this.TransformBindableTo(inactiveVolumeFade, 1, 500, Easing.OutQuint)
+ .Finally(_ => Audio.RemoveAdjustment(AdjustableProperty.Volume, inactiveVolumeFade)); //wait for the transition to finish to remove the inactive audio adjustment
+ }
else
- Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeAdjust);
+ {
+ Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeFade);
+ this.TransformBindableTo(inactiveVolumeFade, userInactiveVolume.Value, 1500, Easing.OutSine);
+ }
}
+ #endregion
+
public bool OnReleased(GlobalAction action) => false;
private Container overlayContent;
diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs
index 4776cd6442..ae840c8c00 100644
--- a/osu.Game/Overlays/Settings/SettingsItem.cs
+++ b/osu.Game/Overlays/Settings/SettingsItem.cs
@@ -63,6 +63,9 @@ namespace osu.Game.Overlays.Settings
set
{
+ if (bindable != null)
+ controlWithCurrent?.Current.UnbindFrom(bindable);
+
bindable = value;
controlWithCurrent?.Current.BindTo(bindable);
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 957d365724..9dd8c8572e 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index 9b146fa490..1482b6ed03 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -105,8 +105,8 @@
-
-
+
+