From fb2293821ab009304c11be3d4d352ee8aa92debe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= <dach.bartlomiej@gmail.com> Date: Thu, 7 Sep 2023 11:26:51 +0200 Subject: [PATCH] Allow watching replay from multi/playlist results screens --- osu.Game/Online/API/Requests/Responses/SoloScoreInfo.cs | 2 +- osu.Game/Online/Rooms/MultiplayerScore.cs | 5 ++++- osu.Game/Scoring/ScoreInfo.cs | 5 ++++- .../OnlinePlay/Multiplayer/MultiplayerResultsScreen.cs | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/osu.Game/Online/API/Requests/Responses/SoloScoreInfo.cs b/osu.Game/Online/API/Requests/Responses/SoloScoreInfo.cs index 15f4bace969f..783522220ba2 100644 --- a/osu.Game/Online/API/Requests/Responses/SoloScoreInfo.cs +++ b/osu.Game/Online/API/Requests/Responses/SoloScoreInfo.cs @@ -189,7 +189,7 @@ public ScoreInfo ToScoreInfo(Mod[] mods, IBeatmapInfo? beatmap = null) Statistics = Statistics, MaximumStatistics = MaximumStatistics, Date = EndedAt, - Hash = HasReplay ? "online" : string.Empty, // TODO: temporary? + HasOnlineReplay = HasReplay, Mods = mods, PP = PP, }; diff --git a/osu.Game/Online/Rooms/MultiplayerScore.cs b/osu.Game/Online/Rooms/MultiplayerScore.cs index 21aa8df54b4a..e6307ab7f0ce 100644 --- a/osu.Game/Online/Rooms/MultiplayerScore.cs +++ b/osu.Game/Online/Rooms/MultiplayerScore.cs @@ -58,6 +58,9 @@ public class MultiplayerScore [JsonProperty("position")] public int? Position { get; set; } + [JsonProperty("has_replay")] + public bool HasReplay { get; set; } + /// <summary> /// Any scores in the room around this score. /// </summary> @@ -84,7 +87,7 @@ public ScoreInfo CreateScoreInfo(ScoreManager scoreManager, RulesetStore ruleset User = User, Accuracy = Accuracy, Date = EndedAt, - Hash = string.Empty, // todo: temporary? + HasOnlineReplay = HasReplay, Rank = Rank, Mods = Mods?.Select(m => m.ToMod(rulesetInstance)).ToArray() ?? Array.Empty<Mod>(), Position = Position, diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index 992271d072e0..6b03e876c481 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -94,7 +94,10 @@ public class ScoreInfo : RealmObject, IHasGuidPrimaryKey, IHasRealmFiles, ISoftD public double Accuracy { get; set; } - public bool HasReplay => !string.IsNullOrEmpty(Hash); + public bool HasReplay => !string.IsNullOrEmpty(Hash) || HasOnlineReplay; + + [Ignored] + public bool HasOnlineReplay { get; set; } public DateTimeOffset Date { get; set; } diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerResultsScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerResultsScreen.cs index 9708a94cd70f..f665ed2d41f3 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerResultsScreen.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerResultsScreen.cs @@ -10,7 +10,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer public partial class MultiplayerResultsScreen : PlaylistsResultsScreen { public MultiplayerResultsScreen(ScoreInfo score, long roomId, PlaylistItem playlistItem) - : base(score, roomId, playlistItem, false, false) + : base(score, roomId, playlistItem, false) { } }