1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-30 01:49:56 +08:00
Files
osu-lazer/osu.Game/Online/Multiplayer/MatchUserRequest.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

31 lines
1.1 KiB
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 System;
using MessagePack;
using osu.Game.Online.Matchmaking.Events;
using osu.Game.Online.Multiplayer.Countdown;
using osu.Game.Online.Multiplayer.MatchTypes.TeamVersus;
using osu.Game.Online.RankedPlay;
namespace osu.Game.Online.Multiplayer
{
/// <summary>
/// A request from a user to perform an action specific to the current match type.
/// </summary>
[Serializable]
[MessagePackObject]
// IMPORTANT: Add rules to SignalRUnionWorkaroundResolver for new derived types.
[Union(0, typeof(ChangeTeamRequest))]
[Union(1, typeof(StartMatchCountdownRequest))]
[Union(2, typeof(StopCountdownRequest))]
[Union(3, typeof(MatchmakingAvatarActionRequest))]
[Union(4, typeof(RankedPlayCardHandReplayRequest))]
[Union(5, typeof(SetLockStateRequest))]
[Union(6, typeof(RollRequest))]
[Union(7, typeof(ChangeSlotRequest))]
public abstract class MatchUserRequest
{
}
}