mirror of
https://github.com/ppy/osu.git
synced 2025-03-05 16:43:04 +08:00
Enable spectating multiplayer matches
This commit is contained in:
parent
3e46d6401e
commit
6eddc6c59e
@ -96,9 +96,6 @@ namespace osu.Game.Online.Multiplayer
|
|||||||
if (!IsConnected.Value)
|
if (!IsConnected.Value)
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
if (newState == MultiplayerUserState.Spectating)
|
|
||||||
return Task.CompletedTask; // Not supported yet.
|
|
||||||
|
|
||||||
return connection.InvokeAsync(nameof(IMultiplayerServer.ChangeState), newState);
|
return connection.InvokeAsync(nameof(IMultiplayerServer.ChangeState), newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,10 +148,12 @@ namespace osu.Game.Screens.OnlinePlay.Match
|
|||||||
return base.OnExiting(next);
|
return base.OnExiting(next);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void StartPlay(Func<Player> player)
|
protected void StartPlay(Func<Player> player) => PushTopLevelScreen(() => new PlayerLoader(player));
|
||||||
|
|
||||||
|
protected void PushTopLevelScreen(Func<Screen> screen)
|
||||||
{
|
{
|
||||||
sampleStart?.Play();
|
sampleStart?.Play();
|
||||||
ParentScreen?.Push(new PlayerLoader(player));
|
ParentScreen?.Push(screen());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectedItemChanged()
|
private void selectedItemChanged()
|
||||||
|
@ -25,6 +25,7 @@ using osu.Game.Screens.OnlinePlay.Match;
|
|||||||
using osu.Game.Screens.OnlinePlay.Match.Components;
|
using osu.Game.Screens.OnlinePlay.Match.Components;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Participants;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Participants;
|
||||||
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Spectate;
|
||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
@ -405,11 +406,22 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onRoomUpdated()
|
private void onRoomUpdated() => Scheduler.Add(() =>
|
||||||
{
|
{
|
||||||
// user mods may have changed.
|
if (client.Room == null)
|
||||||
Scheduler.AddOnce(UpdateMods);
|
return;
|
||||||
}
|
|
||||||
|
Debug.Assert(client.LocalUser != null);
|
||||||
|
|
||||||
|
UpdateMods();
|
||||||
|
|
||||||
|
if (client.LocalUser.State == MultiplayerUserState.Spectating
|
||||||
|
&& (client.Room.State == MultiplayerRoomState.Playing || client.Room.State == MultiplayerRoomState.WaitingForLoad)
|
||||||
|
&& ParentScreen.IsCurrentScreen())
|
||||||
|
{
|
||||||
|
PushTopLevelScreen(() => new MultiplayerSpectator(client.CurrentMatchPlayingUserIds.ToArray()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
private void onLoadRequested()
|
private void onLoadRequested()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user