diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerParticipantsList.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerParticipantsList.cs
index 9aa1f2cf99..8caba5d9c8 100644
--- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerParticipantsList.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerParticipantsList.cs
@@ -139,7 +139,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
});
- Client.ChangeUserExtraMods(0, new Mod[]
+ Client.ChangeUserMods(0, new Mod[]
{
new OsuModHardRock(),
new OsuModDifficultyAdjust { ApproachRate = { Value = 1 } }
diff --git a/osu.Game/Online/Multiplayer/IMultiplayerClient.cs b/osu.Game/Online/Multiplayer/IMultiplayerClient.cs
index 37f60ab036..f22b0e4e28 100644
--- a/osu.Game/Online/Multiplayer/IMultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/IMultiplayerClient.cs
@@ -57,7 +57,7 @@ namespace osu.Game.Online.Multiplayer
/// The new beatmap availability state of the user.
Task UserBeatmapAvailabilityChanged(int userId, BeatmapAvailability beatmapAvailability);
- Task UserExtraModsChanged(int userId, IEnumerable mods);
+ Task UserModsChanged(int userId, IEnumerable mods);
///
/// Signals that a match is to be started. This will *only* be sent to clients which are to begin loading at this point.
diff --git a/osu.Game/Online/Multiplayer/IMultiplayerRoomServer.cs b/osu.Game/Online/Multiplayer/IMultiplayerRoomServer.cs
index 484acfe957..71555ae23d 100644
--- a/osu.Game/Online/Multiplayer/IMultiplayerRoomServer.cs
+++ b/osu.Game/Online/Multiplayer/IMultiplayerRoomServer.cs
@@ -49,7 +49,7 @@ namespace osu.Game.Online.Multiplayer
/// The proposed new beatmap availability state.
Task ChangeBeatmapAvailability(BeatmapAvailability newBeatmapAvailability);
- Task ChangeExtraMods(IEnumerable newMods);
+ Task ChangeUserMods(IEnumerable newMods);
///
/// As the host of a room, start the match.
diff --git a/osu.Game/Online/Multiplayer/MultiplayerClient.cs b/osu.Game/Online/Multiplayer/MultiplayerClient.cs
index 50dc8f661c..ecf314c1e5 100644
--- a/osu.Game/Online/Multiplayer/MultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/MultiplayerClient.cs
@@ -4,6 +4,7 @@
#nullable enable
using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
@@ -84,6 +85,7 @@ namespace osu.Game.Online.Multiplayer
connection.On(nameof(IMultiplayerClient.LoadRequested), ((IMultiplayerClient)this).LoadRequested);
connection.On(nameof(IMultiplayerClient.MatchStarted), ((IMultiplayerClient)this).MatchStarted);
connection.On(nameof(IMultiplayerClient.ResultsReady), ((IMultiplayerClient)this).ResultsReady);
+ connection.On>(nameof(IMultiplayerClient.UserModsChanged), ((IMultiplayerClient)this).UserModsChanged);
connection.Closed += async ex =>
{
@@ -182,6 +184,14 @@ namespace osu.Game.Online.Multiplayer
return connection.InvokeAsync(nameof(IMultiplayerServer.ChangeBeatmapAvailability), newBeatmapAvailability);
}
+ public override Task ChangeUserMods(IEnumerable newMods)
+ {
+ if (!isConnected.Value)
+ return Task.CompletedTask;
+
+ return connection.InvokeAsync(nameof(IMultiplayerServer.ChangeUserMods), newMods);
+ }
+
public override Task StartMatch()
{
if (!isConnected.Value)
diff --git a/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs b/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
index d7f7f9135e..4c9643bfce 100644
--- a/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
+++ b/osu.Game/Online/Multiplayer/MultiplayerRoomUser.cs
@@ -27,7 +27,7 @@ namespace osu.Game.Online.Multiplayer
public BeatmapAvailability BeatmapAvailability { get; set; } = BeatmapAvailability.LocallyAvailable();
[NotNull]
- public IEnumerable ExtraMods { get; set; } = Enumerable.Empty();
+ public IEnumerable UserMods { get; set; } = Enumerable.Empty();
public User? User { get; set; }
diff --git a/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs b/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
index 33dcf1e8b4..a0e903e89a 100644
--- a/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/StatefulMultiplayerClient.cs
@@ -232,9 +232,9 @@ namespace osu.Game.Online.Multiplayer
public abstract Task ChangeBeatmapAvailability(BeatmapAvailability newBeatmapAvailability);
- public Task ChangeExtraMods(IEnumerable newMods) => ChangeExtraMods(newMods.Select(m => new APIMod(m)).ToList());
+ public Task ChangeUserMods(IEnumerable newMods) => ChangeUserMods(newMods.Select(m => new APIMod(m)).ToList());
- public abstract Task ChangeExtraMods(IEnumerable newMods);
+ public abstract Task ChangeUserMods(IEnumerable newMods);
public abstract Task StartMatch();
@@ -384,7 +384,7 @@ namespace osu.Game.Online.Multiplayer
return Task.CompletedTask;
}
- public Task UserExtraModsChanged(int userId, IEnumerable mods)
+ public Task UserModsChanged(int userId, IEnumerable mods)
{
if (Room == null)
return Task.CompletedTask;
@@ -397,7 +397,7 @@ namespace osu.Game.Online.Multiplayer
if (user == null)
return;
- user.ExtraMods = mods;
+ user.UserMods = mods;
RoomUpdated?.Invoke();
}, false);
diff --git a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
index 3c4c6ce040..6367aa54a7 100644
--- a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
@@ -33,7 +33,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
///
/// Any mods applied by/to the local user.
///
- protected readonly Bindable> ExtraMods = new Bindable>(Array.Empty());
+ protected readonly Bindable> UserMods = new Bindable>(Array.Empty());
[Resolved]
private MusicController music { get; set; }
@@ -62,7 +62,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
managerUpdated = beatmapManager.ItemUpdated.GetBoundCopy();
managerUpdated.BindValueChanged(beatmapUpdated);
- ExtraMods.BindValueChanged(_ => updateMods());
+ UserMods.BindValueChanged(_ => updateMods());
}
public override void OnEntering(IScreen last)
@@ -108,9 +108,9 @@ namespace osu.Game.Screens.OnlinePlay.Match
return;
// Remove any extra mods that are no longer allowed.
- ExtraMods.Value = ExtraMods.Value
- .Where(m => SelectedItem.Value.AllowedMods.Any(a => m.GetType() == a.GetType()))
- .ToList();
+ UserMods.Value = UserMods.Value
+ .Where(m => SelectedItem.Value.AllowedMods.Any(a => m.GetType() == a.GetType()))
+ .ToList();
updateMods();
@@ -134,7 +134,7 @@ namespace osu.Game.Screens.OnlinePlay.Match
if (SelectedItem.Value == null)
return;
- Mods.Value = ExtraMods.Value.Concat(SelectedItem.Value.RequiredMods).ToList();
+ Mods.Value = UserMods.Value.Concat(SelectedItem.Value.RequiredMods).ToList();
}
private void beginHandlingTrack()
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
index c1025e73f8..a31a3e51ee 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
@@ -42,9 +42,9 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
[Resolved]
private OngoingOperationTracker ongoingOperationTracker { get; set; }
- private ModSelectOverlay extraModSelectOverlay;
+ private ModSelectOverlay userModsSelectOverlay;
private MultiplayerMatchSettingsOverlay settingsOverlay;
- private Drawable extraModsSection;
+ private Drawable userModsSection;
private IBindable isConnected;
@@ -149,7 +149,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
new BeatmapSelectionControl { RelativeSizeAxes = Axes.X }
}
},
- extraModsSection = new FillFlowContainer
+ userModsSection = new FillFlowContainer
{
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
@@ -159,13 +159,13 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
new ModDisplay
{
DisplayUnrankedText = false,
- Current = ExtraMods
+ Current = UserMods
},
new PurpleTriangleButton
{
RelativeSizeAxes = Axes.X,
Text = "Select",
- Action = () => extraModSelectOverlay.Show()
+ Action = () => userModsSelectOverlay.Show()
}
}
}
@@ -210,9 +210,9 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
new Dimension(GridSizeMode.AutoSize),
}
},
- extraModSelectOverlay = new SoloModSelectOverlay
+ userModsSelectOverlay = new SoloModSelectOverlay
{
- SelectedMods = { BindTarget = ExtraMods },
+ SelectedMods = { BindTarget = UserMods },
Stacked = false,
IsValidMod = _ => false
},
@@ -242,7 +242,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
base.LoadComplete();
Playlist.BindCollectionChanged(onPlaylistChanged, true);
- ExtraMods.BindValueChanged(onExtraModsChanged);
+ UserMods.BindValueChanged(onUserModsChanged);
client.LoadRequested += onLoadRequested;
@@ -262,9 +262,9 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
return true;
}
- if (extraModSelectOverlay.State.Value == Visibility.Visible)
+ if (userModsSelectOverlay.State.Value == Visibility.Visible)
{
- extraModSelectOverlay.Hide();
+ userModsSelectOverlay.Hide();
return true;
}
@@ -277,23 +277,23 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
if (SelectedItem.Value?.AllowedMods.Any() != true)
{
- extraModsSection.Hide();
- extraModSelectOverlay.Hide();
- extraModSelectOverlay.IsValidMod = _ => false;
+ userModsSection.Hide();
+ userModsSelectOverlay.Hide();
+ userModsSelectOverlay.IsValidMod = _ => false;
}
else
{
- extraModsSection.Show();
- extraModSelectOverlay.IsValidMod = m => SelectedItem.Value.AllowedMods.Any(a => a.GetType() == m.GetType());
+ userModsSection.Show();
+ userModsSelectOverlay.IsValidMod = m => SelectedItem.Value.AllowedMods.Any(a => a.GetType() == m.GetType());
}
}
- private void onExtraModsChanged(ValueChangedEvent> extraMods)
+ private void onUserModsChanged(ValueChangedEvent> mods)
{
if (client.Room == null)
return;
- client.ChangeExtraMods(extraMods.NewValue).CatchUnobservedExceptions();
+ client.ChangeUserMods(mods.NewValue).CatchUnobservedExceptions();
}
private void onReadyClick()
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/ParticipantPanel.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/ParticipantPanel.cs
index 059e9e518d..a782da4c39 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/ParticipantPanel.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Participants/ParticipantPanel.cs
@@ -36,7 +36,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Participants
[Resolved]
private RulesetStore rulesets { get; set; }
- private ModDisplay extraModsDisplay;
+ private ModDisplay userModsDisplay;
private StateDisplay userStateDisplay;
private SpriteIcon crown;
@@ -139,7 +139,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Participants
Spacing = new Vector2(10),
Children = new Drawable[]
{
- extraModsDisplay = new ModDisplay
+ userModsDisplay = new ModDisplay
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -174,7 +174,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Participants
var ruleset = rulesets.GetRuleset(Room.Settings.RulesetID).CreateInstance();
userStateDisplay.Status = User.State;
- extraModsDisplay.Current.Value = User.ExtraMods.Select(m => m.ToMod(ruleset)).ToList();
+ userModsDisplay.Current.Value = User.UserMods.Select(m => m.ToMod(ruleset)).ToList();
if (Room.Host?.Equals(User) == true)
crown.FadeIn(fade_time);
diff --git a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
index e699e7fb34..d0d41e56c3 100644
--- a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
+++ b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
@@ -124,18 +124,18 @@ namespace osu.Game.Tests.Visual.Multiplayer
return Task.CompletedTask;
}
- public void ChangeUserExtraMods(int userId, IEnumerable newMods)
- => ChangeUserExtraMods(userId, newMods.Select(m => new APIMod(m)).ToList());
+ public void ChangeUserMods(int userId, IEnumerable newMods)
+ => ChangeUserMods(userId, newMods.Select(m => new APIMod(m)).ToList());
- public void ChangeUserExtraMods(int userId, IEnumerable newMods)
+ public void ChangeUserMods(int userId, IEnumerable newMods)
{
Debug.Assert(Room != null);
- ((IMultiplayerClient)this).UserExtraModsChanged(userId, newMods.ToList());
+ ((IMultiplayerClient)this).UserModsChanged(userId, newMods.ToList());
}
- public override Task ChangeExtraMods(IEnumerable newMods)
+ public override Task ChangeUserMods(IEnumerable newMods)
{
- ChangeUserExtraMods(api.LocalUser.Value.Id, newMods);
+ ChangeUserMods(api.LocalUser.Value.Id, newMods);
return Task.CompletedTask;
}