osu/osu.Game/Online/RealtimeMultiplayer/IMultiplayerServer.cs

47 lines
1.7 KiB
C#
Raw Normal View History

2020-12-04 09:18:41 +00:00
using System.Threading.Tasks;
namespace osu.Game.Online.RealtimeMultiplayer
{
/// <summary>
/// An interface defining the spectator server instance.
/// </summary>
public interface IMultiplayerServer
{
2020-12-04 09:18:41 +00:00
/// <summary>
/// Request to join a multiplayer room.
/// </summary>
/// <param name="roomId">The databased room ID.</param>
/// <exception cref="UserAlreadyInMultiplayerRoom">If the user is already in the requested (or another) room.</exception>
2020-12-08 07:15:58 +00:00
Task<MultiplayerRoom> JoinRoom(long roomId);
2020-12-04 09:18:41 +00:00
/// <summary>
/// Request to leave the currently joined room.
/// </summary>
Task LeaveRoom();
/// <summary>
/// Transfer the host of the currently joined room to another user in the room.
/// </summary>
/// <param name="userId">The new user which is to become host.</param>
Task TransferHost(long userId);
/// <summary>
/// As the host, update the settings of the currently joined room.
/// </summary>
/// <param name="settings">The new settings to apply.</param>
Task ChangeSettings(MultiplayerRoomSettings settings);
/// <summary>
/// Change the local user state in the currently joined room.
/// </summary>
/// <param name="newState">The proposed new state.</param>
/// <exception cref="InvalidStateChange">If the state change requested is not valid, given the previous state or room state.</exception>
Task ChangeState(MultiplayerUserState newState);
2020-12-08 09:42:08 +00:00
/// <summary>
/// As the host of a room, start the match.
/// </summary>
Task StartMatch();
}
}