diff --git a/osu.Android.props b/osu.Android.props
index 611f0d05f4..492c88c7e4 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -52,6 +52,6 @@
-
+
diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs
index e574828cd2..ab8efdabcc 100644
--- a/osu.Game/Overlays/Mods/ModButton.cs
+++ b/osu.Game/Overlays/Mods/ModButton.cs
@@ -52,9 +52,10 @@ namespace osu.Game.Overlays.Mods
if (newIndex == selectedIndex) return false;
int direction = newIndex < selectedIndex ? -1 : 1;
+
bool beforeSelected = Selected;
- Mod modBefore = SelectedMod ?? Mods[0];
+ Mod previousSelection = SelectedMod ?? Mods[0];
if (newIndex >= Mods.Length)
newIndex = -1;
@@ -65,40 +66,45 @@ namespace osu.Game.Overlays.Mods
return false;
selectedIndex = newIndex;
- Mod modAfter = SelectedMod ?? Mods[0];
- if (beforeSelected != Selected)
+ Mod newSelection = SelectedMod ?? Mods[0];
+
+ Schedule(() =>
{
- iconsContainer.RotateTo(Selected ? 5f : 0f, 300, Easing.OutElastic);
- iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, Easing.OutElastic);
- }
-
- if (modBefore != modAfter)
- {
- const float rotate_angle = 16;
-
- foregroundIcon.RotateTo(rotate_angle * direction, mod_switch_duration, mod_switch_easing);
- backgroundIcon.RotateTo(-rotate_angle * direction, mod_switch_duration, mod_switch_easing);
-
- backgroundIcon.Mod = modAfter;
-
- using (BeginDelayedSequence(mod_switch_duration, true))
+ if (beforeSelected != Selected)
{
- foregroundIcon
- .RotateTo(-rotate_angle * direction)
- .RotateTo(0f, mod_switch_duration, mod_switch_easing);
-
- backgroundIcon
- .RotateTo(rotate_angle * direction)
- .RotateTo(0f, mod_switch_duration, mod_switch_easing);
-
- Schedule(() => displayMod(modAfter));
+ iconsContainer.RotateTo(Selected ? 5f : 0f, 300, Easing.OutElastic);
+ iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, Easing.OutElastic);
}
- }
- foregroundIcon.Selected.Value = Selected;
+ if (previousSelection != newSelection)
+ {
+ const float rotate_angle = 16;
+
+ foregroundIcon.RotateTo(rotate_angle * direction, mod_switch_duration, mod_switch_easing);
+ backgroundIcon.RotateTo(-rotate_angle * direction, mod_switch_duration, mod_switch_easing);
+
+ backgroundIcon.Mod = newSelection;
+
+ using (BeginDelayedSequence(mod_switch_duration, true))
+ {
+ foregroundIcon
+ .RotateTo(-rotate_angle * direction)
+ .RotateTo(0f, mod_switch_duration, mod_switch_easing);
+
+ backgroundIcon
+ .RotateTo(rotate_angle * direction)
+ .RotateTo(0f, mod_switch_duration, mod_switch_easing);
+
+ Schedule(() => displayMod(newSelection));
+ }
+ }
+
+ foregroundIcon.Selected.Value = Selected;
+ });
SelectionChanged?.Invoke(SelectedMod);
+
return true;
}
diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs
index 34f5c70adb..491052fa2c 100644
--- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs
+++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs
@@ -249,7 +249,7 @@ namespace osu.Game.Overlays.Mods
{
Width = 180,
Text = "Deselect All",
- Action = DeselectAll,
+ Action = deselectAll,
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
},
@@ -318,7 +318,7 @@ namespace osu.Game.Overlays.Mods
sampleOff = audio.Samples.Get(@"UI/check-off");
}
- public void DeselectAll()
+ private void deselectAll()
{
foreach (var section in ModSectionsContainer.Children)
section.DeselectAll();
@@ -331,7 +331,7 @@ namespace osu.Game.Overlays.Mods
///
/// The types of s which should be deselected.
/// Set to true to bypass animations and update selections immediately.
- public void DeselectTypes(Type[] modTypes, bool immediate = false)
+ private void deselectTypes(Type[] modTypes, bool immediate = false)
{
if (modTypes.Length == 0) return;
@@ -438,7 +438,7 @@ namespace osu.Game.Overlays.Mods
{
if (State.Value == Visibility.Visible) sampleOn?.Play();
- DeselectTypes(selectedMod.IncompatibleMods, true);
+ deselectTypes(selectedMod.IncompatibleMods, true);
if (selectedMod.RequiresConfiguration) ModSettingsContainer.Show();
}
diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs
index 50a61ed4c2..e61d5cce85 100644
--- a/osu.Game/Screens/Select/PlaySongSelect.cs
+++ b/osu.Game/Screens/Select/PlaySongSelect.cs
@@ -9,6 +9,7 @@ using osu.Framework.Screens;
using osu.Game.Graphics;
using osu.Game.Overlays;
using osu.Game.Overlays.Notifications;
+using osu.Game.Rulesets.Mods;
using osu.Game.Scoring;
using osu.Game.Screens.Play;
using osu.Game.Screens.Ranking;
@@ -42,6 +43,8 @@ namespace osu.Game.Screens.Select
protected override BeatmapDetailArea CreateBeatmapDetailArea() => new PlayBeatmapDetailArea();
+ private ModAutoplay getAutoplayMod() => Ruleset.Value.CreateInstance().GetAutoplayMod();
+
public override void OnResuming(IScreen last)
{
base.OnResuming(last);
@@ -50,10 +53,10 @@ namespace osu.Game.Screens.Select
if (removeAutoModOnResume)
{
- var autoType = Ruleset.Value.CreateInstance().GetAutoplayMod()?.GetType();
+ var autoType = getAutoplayMod()?.GetType();
if (autoType != null)
- ModSelect.DeselectTypes(new[] { autoType }, true);
+ Mods.Value = Mods.Value.Where(m => m.GetType() != autoType).ToArray();
removeAutoModOnResume = false;
}
@@ -81,12 +84,9 @@ namespace osu.Game.Screens.Select
// Ctrl+Enter should start map with autoplay enabled.
if (GetContainingInputManager().CurrentState?.Keyboard.ControlPressed == true)
{
- var auto = Ruleset.Value.CreateInstance().GetAutoplayMod();
- var autoType = auto?.GetType();
+ var autoplayMod = getAutoplayMod();
- var mods = Mods.Value;
-
- if (autoType == null)
+ if (autoplayMod == null)
{
notifications?.Post(new SimpleNotification
{
@@ -95,9 +95,11 @@ namespace osu.Game.Screens.Select
return false;
}
- if (mods.All(m => m.GetType() != autoType))
+ var mods = Mods.Value;
+
+ if (mods.All(m => m.GetType() != autoplayMod.GetType()))
{
- Mods.Value = mods.Append(auto).ToArray();
+ Mods.Value = mods.Append(autoplayMod).ToArray();
removeAutoModOnResume = true;
}
}
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 6c220a5c21..f28a55e016 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index 5445adb3fb..93be3645ee 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -70,7 +70,7 @@
-
+
@@ -88,7 +88,7 @@
-
+