+ /// An loadable into s via ,
+ /// which provides dependencies for and loads an isolated screen.
+ ///
+ /// This screen:
+ ///
+ /// - Provides a to be resolved as a dependency in the screen,
+ /// which is typically a part of .
+ /// - Rebinds the to handle requests via a .
+ /// - Provides a for the screen.
+ ///
+ ///
+ ///
+ public class TestMultiplayerScreenStack : OsuScreen
+ {
+ public Screens.OnlinePlay.Multiplayer.Multiplayer MultiplayerScreen => multiplayerScreen;
+
+ public TestMultiplayerRoomManager RoomManager => multiplayerScreen.RoomManager;
+
+ public IScreen CurrentScreen => screenStack.CurrentScreen;
+
+ public new bool IsLoaded => base.IsLoaded && MultiplayerScreen.IsLoaded;
+
+ [Cached(typeof(MultiplayerClient))]
+ public readonly TestMultiplayerClient Client;
+
+ private readonly OsuScreenStack screenStack;
+ private readonly TestMultiplayer multiplayerScreen;
+
+ public TestMultiplayerScreenStack()
+ {
+ multiplayerScreen = new TestMultiplayer();
+
+ InternalChildren = new Drawable[]
+ {
+ Client = new TestMultiplayerClient(RoomManager),
+ screenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }
+ };
+
+ screenStack.Push(multiplayerScreen);
+ }
+
+ [BackgroundDependencyLoader]
+ private void load(IAPIProvider api, OsuGameBase game)
+ {
+ ((DummyAPIAccess)api).HandleRequest = request => multiplayerScreen.RequestsHandler.HandleRequest(request, api.LocalUser.Value, game);
+ }
+
+ public override bool OnBackButton() => multiplayerScreen.OnBackButton();
+
+ public override bool OnExiting(IScreen next)
+ {
+ if (screenStack.CurrentScreen == null)
+ return base.OnExiting(next);
+
+ screenStack.Exit();
+ return true;
+ }
+
+ private class TestMultiplayer : Screens.OnlinePlay.Multiplayer.Multiplayer
+ {
+ public new TestMultiplayerRoomManager RoomManager { get; private set; }
+ public TestRoomRequestsHandler RequestsHandler { get; private set; }
+
+ protected override RoomManager CreateRoomManager() => RoomManager = new TestMultiplayerRoomManager(RequestsHandler = new TestRoomRequestsHandler());
+ }
+ }
+}
diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControlHeader.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControlHeader.cs
index 90c3e142df..7bc75f1c44 100644
--- a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControlHeader.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControlHeader.cs
@@ -31,18 +31,18 @@ namespace osu.Game.Tests.Visual.UserInterface
[Test]
public void TestAddAndRemoveItem()
{
- foreach (var item in items.Skip(1))
+ foreach (string item in items.Skip(1))
AddStep($"Add {item} item", () => header.AddItem(item));
- foreach (var item in items.Reverse().SkipLast(3))
+ foreach (string item in items.Reverse().SkipLast(3))
AddStep($"Remove {item} item", () => header.RemoveItem(item));
AddStep("Clear items", () => header.ClearItems());
- foreach (var item in items)
+ foreach (string item in items)
AddStep($"Add {item} item", () => header.AddItem(item));
- foreach (var item in items)
+ foreach (string item in items)
AddStep($"Remove {item} item", () => header.RemoveItem(item));
}
diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs
index 8d1572769f..0631059d1a 100644
--- a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs
@@ -73,8 +73,8 @@ namespace osu.Game.Tests.Visual.UserInterface
private bool assertModsMultiplier(IEnumerable