diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerSpectateButton.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerSpectateButton.cs index 956d40a456..31f8e00772 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerSpectateButton.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerSpectateButton.cs @@ -71,16 +71,6 @@ namespace osu.Game.Tests.Visual.Multiplayer Anchor = Anchor.Centre, Origin = Anchor.Centre, Size = new Vector2(200, 50), - OnSpectateClick = () => - { - readyClickOperation = OngoingOperationTracker.BeginOperation(); - - Task.Run(async () => - { - await MultiplayerClient.ToggleSpectate(); - readyClickOperation.Dispose(); - }); - } }, readyButton = new MultiplayerReadyButton { diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerMatchFooter.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerMatchFooter.cs index 036e37ddfd..4d4cff021d 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerMatchFooter.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerMatchFooter.cs @@ -17,13 +17,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match set => readyButton.OnReadyClick = value; } - public Action OnSpectateClick - { - set => spectateButton.OnSpectateClick = value; - } - private readonly MultiplayerReadyButton readyButton; - private readonly MultiplayerSpectateButton spectateButton; public MultiplayerMatchFooter() { @@ -37,7 +31,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match new Drawable[] { null, - spectateButton = new MultiplayerSpectateButton + new MultiplayerSpectateButton { RelativeSizeAxes = Axes.Both, }, diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerSpectateButton.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerSpectateButton.cs index db99c6a5d5..d939fbf400 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerSpectateButton.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Match/MultiplayerSpectateButton.cs @@ -1,7 +1,6 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using System; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -15,11 +14,6 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match { public class MultiplayerSpectateButton : MultiplayerRoomComposite { - public Action OnSpectateClick - { - set => button.Action = value; - } - [Resolved] private OngoingOperationTracker ongoingOperationTracker { get; set; } @@ -37,9 +31,19 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match RelativeSizeAxes = Axes.Both, Size = Vector2.One, Enabled = { Value = true }, + Action = onClick }; } + private void onClick() + { + var clickOperation = ongoingOperationTracker.BeginOperation(); + + Client.ToggleSpectate().ContinueWith(t => endOperation()); + + void endOperation() => clickOperation?.Dispose(); + } + [BackgroundDependencyLoader] private void load() { diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs index c78dcb7cb6..3a8816de99 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs @@ -233,7 +233,6 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer protected override Drawable CreateFooter() => new MultiplayerMatchFooter { OnReadyClick = onReadyClick, - OnSpectateClick = onSpectateClick }; protected override RoomSettingsOverlay CreateRoomSettingsOverlay(Room room) => new MultiplayerMatchSettingsOverlay(room); @@ -364,20 +363,6 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer } } - private void onSpectateClick() - { - Debug.Assert(readyClickOperation == null); - readyClickOperation = ongoingOperationTracker.BeginOperation(); - - client.ToggleSpectate().ContinueWith(t => endOperation()); - - void endOperation() - { - readyClickOperation?.Dispose(); - readyClickOperation = null; - } - } - private void onRoomUpdated() { // may happen if the client is kicked or otherwise removed from the room.