1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-26 09:30:06 +08:00
Files
osu-lazer/osu.Game/Online/Multiplayer/SetLockStateRequest.cs
T
Bartłomiej Dach 4671d1fe74 Add client-side support for slots in multiplayer rooms (#37741)
- Part of https://github.com/ppy/osu-server-spectator/issues/405

<img width="1624" height="900" alt="Screenshot 2026-05-13 at 12 40 07"
src="https://github.com/user-attachments/assets/a7f36d54-4cc6-49c9-8e89-ee0d049bb637"
/>
<img width="1624" height="900" alt="Screenshot 2026-05-13 at 12 31 40"
src="https://github.com/user-attachments/assets/0c054dfd-addd-4d00-bbca-119b4c3ec3cb"
/>

Will not work until relevant server-side support is in.

---

I was in two minds whether to PR this all at once or to PR only
https://github.com/ppy/osu/commit/693e4ef4b095042f7a171672224e10f9c4f47c1c
to begin with to unblock server-side implementation. In the end I opted
for one PR because usage informs the model, so I find everything else
relevant as part of review of the model design. If there are concerns
about this making it into a release without server-side support and
therefore things looking broken I will split the commit out on request.

I put in some effort to add relevant logic in test multiplayer client to
simulate the server side but I may well have missed something.

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-05-21 20:01:34 +09:00

24 lines
881 B
C#

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using MessagePack;
namespace osu.Game.Online.Multiplayer
{
[MessagePackObject]
public class SetLockStateRequest : MatchUserRequest
{
/// <summary>
/// <para>
/// If <see langword="true"/>, <see cref="MultiplayerRoomUserRole.Player"/>s will not be able to change teams and slots by themselves in the room,
/// only <see cref="MultiplayerRoomUserRole.Referee"/>s will be able to change teams for the <see cref="MultiplayerRoomUserRole.Player"/>s.
/// </para>
/// <para>
/// If <see langword="false"/>, any user can change their team and slot in the room.
/// </para>
/// </summary>
[Key(0)]
public bool Locked { get; set; }
}
}