From a7aa36a825cc9589ee6f3cf5bf2f5792d8df09cd Mon Sep 17 00:00:00 2001
From: maromalo <54760464+maromalo@users.noreply.github.com>
Date: Sat, 21 May 2022 04:55:42 -0300
Subject: [PATCH 1/4] Add OnPressed to button
---
.../Screens/OnlinePlay/Match/RoomSubScreen.cs | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
index 13b2c37ded..61798b5413 100644
--- a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
@@ -15,9 +15,12 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Cursor;
using osu.Framework.Graphics.Shapes;
+using osu.Framework.Input.Bindings;
+using osu.Framework.Input.Events;
using osu.Framework.Screens;
using osu.Game.Audio;
using osu.Game.Beatmaps;
+using osu.Game.Input.Bindings;
using osu.Game.Online.Rooms;
using osu.Game.Overlays;
using osu.Game.Overlays.Mods;
@@ -473,8 +476,19 @@ namespace osu.Game.Screens.OnlinePlay.Match
/// The room to change the settings of.
protected abstract RoomSettingsOverlay CreateRoomSettingsOverlay(Room room);
- public class UserModSelectButton : PurpleTriangleButton
+ public class UserModSelectButton : PurpleTriangleButton, IKeyBindingHandler
{
+ public virtual bool OnPressed(KeyBindingPressEvent e)
+ {
+ if (e.Action == GlobalAction.ToggleModSelection && !e.Repeat)
+ {
+ TriggerClick();
+ return true;
+ }
+ return false;
+ }
+
+ public virtual void OnReleased(KeyBindingReleaseEvent e) { }
}
protected override void Dispose(bool isDisposing)
From 2bd4c126d39223990260535b2f4874ef8229e0b8 Mon Sep 17 00:00:00 2001
From: maromalo <54760464+maromalo@users.noreply.github.com>
Date: Sat, 21 May 2022 05:07:24 -0300
Subject: [PATCH 2/4] Blank line
Forgot to save.
---
osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
index 61798b5413..0dc6e52770 100644
--- a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
@@ -485,6 +485,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
TriggerClick();
return true;
}
+
return false;
}
From fc25d248ad18d4af683347fe0a3b444504e4161c Mon Sep 17 00:00:00 2001
From: maromalo <54760464+maromalo@users.noreply.github.com>
Date: Sat, 21 May 2022 18:16:29 -0300
Subject: [PATCH 3/4] Test coverage + no virtual
---
.../TestSceneMultiplayerMatchSubScreen.cs | 42 +++++++++++++++++++
.../Screens/OnlinePlay/Match/RoomSubScreen.cs | 4 +-
2 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
index ca79fa9cb8..dd281e7738 100644
--- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
@@ -178,6 +178,48 @@ namespace osu.Game.Tests.Visual.Multiplayer
.SingleOrDefault(panel => !panel.Filtered.Value)?.Mod is OsuModDoubleTime);
}
+ [Test]
+ public void TestModSelectKeyWithAllowedMods()
+ {
+ AddStep("add playlist item with allowed mod", () =>
+ {
+ SelectedRoom.Value.Playlist.Add(new PlaylistItem(new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo)
+ {
+ RulesetID = new OsuRuleset().RulesetInfo.OnlineID,
+ AllowedMods = new[] { new APIMod(new OsuModDoubleTime()) }
+ });
+ });
+
+ ClickButtonWhenEnabled();
+
+ AddUntilStep("wait for join", () => RoomJoined);
+
+ AddStep("press toggle mod select key", () => InputManager.Key(osuTK.Input.Key.F1));
+
+ AddUntilStep("mod select contents loaded",
+ () => this.ChildrenOfType().Any() && this.ChildrenOfType().All(col => col.IsLoaded && col.ItemsLoaded));
+ }
+
+ [Test]
+ public void TestModSelectKeyWithNoAllowedMods()
+ {
+ AddStep("add playlist item with no allowed mods", () =>
+ {
+ SelectedRoom.Value.Playlist.Add(new PlaylistItem(new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo)
+ {
+ RulesetID = new OsuRuleset().RulesetInfo.OnlineID,
+ });
+ });
+ ClickButtonWhenEnabled();
+
+ AddUntilStep("wait for join", () => RoomJoined);
+
+ AddStep("press toggle mod select key", () => InputManager.Key(osuTK.Input.Key.F1));
+
+ AddAssert("mod select contents not loaded",
+ () => !(this.ChildrenOfType().Any() && this.ChildrenOfType().All(col => col.IsLoaded && col.ItemsLoaded)));
+ }
+
[Test]
public void TestNextPlaylistItemSelectedAfterCompletion()
{
diff --git a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
index 0dc6e52770..a612b6a0e6 100644
--- a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
@@ -478,7 +478,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
public class UserModSelectButton : PurpleTriangleButton, IKeyBindingHandler
{
- public virtual bool OnPressed(KeyBindingPressEvent e)
+ public bool OnPressed(KeyBindingPressEvent e)
{
if (e.Action == GlobalAction.ToggleModSelection && !e.Repeat)
{
@@ -489,7 +489,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
return false;
}
- public virtual void OnReleased(KeyBindingReleaseEvent e) { }
+ public void OnReleased(KeyBindingReleaseEvent e) { }
}
protected override void Dispose(bool isDisposing)
From 0bef2ca7526295767db063b0b9e92035411cda83 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Dach?=
Date: Sun, 22 May 2022 19:27:20 +0200
Subject: [PATCH 4/4] Adjust test slightly
* Import `osuTK.Input` instead of using full qualified name
* Use some more straightforward assertions
---
.../TestSceneMultiplayerMatchSubScreen.cs | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
index dd281e7738..7ae81c9800 100644
--- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs
@@ -6,6 +6,7 @@ using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Audio;
using osu.Framework.Extensions;
+using osu.Framework.Graphics.Containers;
using osu.Framework.Platform;
using osu.Framework.Screens;
using osu.Framework.Testing;
@@ -28,6 +29,7 @@ using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
using osu.Game.Screens.OnlinePlay.Multiplayer.Participants;
using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Resources;
+using osuTK.Input;
namespace osu.Game.Tests.Visual.Multiplayer
{
@@ -194,10 +196,9 @@ namespace osu.Game.Tests.Visual.Multiplayer
AddUntilStep("wait for join", () => RoomJoined);
- AddStep("press toggle mod select key", () => InputManager.Key(osuTK.Input.Key.F1));
+ AddStep("press toggle mod select key", () => InputManager.Key(Key.F1));
- AddUntilStep("mod select contents loaded",
- () => this.ChildrenOfType().Any() && this.ChildrenOfType().All(col => col.IsLoaded && col.ItemsLoaded));
+ AddUntilStep("mod select shown", () => this.ChildrenOfType().Single().State.Value == Visibility.Visible);
}
[Test]
@@ -214,10 +215,10 @@ namespace osu.Game.Tests.Visual.Multiplayer
AddUntilStep("wait for join", () => RoomJoined);
- AddStep("press toggle mod select key", () => InputManager.Key(osuTK.Input.Key.F1));
+ AddStep("press toggle mod select key", () => InputManager.Key(Key.F1));
- AddAssert("mod select contents not loaded",
- () => !(this.ChildrenOfType().Any() && this.ChildrenOfType().All(col => col.IsLoaded && col.ItemsLoaded)));
+ AddWaitStep("wait some", 3);
+ AddAssert("mod select not shown", () => this.ChildrenOfType().Single().State.Value == Visibility.Hidden);
}
[Test]