From c53f4c144cc109d0b0f710adf39ea31be12a29fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Fri, 1 Sep 2023 08:23:29 +0200 Subject: [PATCH] Encode/decode new `OnlineID` into/from `LegacyReplaySoloScoreInfo` --- osu.Game/Scoring/Legacy/LegacyReplaySoloScoreInfo.cs | 8 ++++++++ osu.Game/Scoring/Legacy/LegacyScoreDecoder.cs | 1 + 2 files changed, 9 insertions(+) diff --git a/osu.Game/Scoring/Legacy/LegacyReplaySoloScoreInfo.cs b/osu.Game/Scoring/Legacy/LegacyReplaySoloScoreInfo.cs index f2e8cf141b..d34edf7bdf 100644 --- a/osu.Game/Scoring/Legacy/LegacyReplaySoloScoreInfo.cs +++ b/osu.Game/Scoring/Legacy/LegacyReplaySoloScoreInfo.cs @@ -19,6 +19,13 @@ namespace osu.Game.Scoring.Legacy [JsonObject(MemberSerialization.OptIn)] public class LegacyReplaySoloScoreInfo { + /// + /// The value of this property should correspond to + /// (i.e. come from the `solo_scores` ID scheme). + /// + [JsonProperty("online_id")] + public long OnlineID { get; set; } = -1; + [JsonProperty("mods")] public APIMod[] Mods { get; set; } = Array.Empty(); @@ -30,6 +37,7 @@ public class LegacyReplaySoloScoreInfo public static LegacyReplaySoloScoreInfo FromScore(ScoreInfo score) => new LegacyReplaySoloScoreInfo { + OnlineID = score.OnlineID, Mods = score.APIMods, Statistics = score.Statistics.Where(kvp => kvp.Value != 0).ToDictionary(kvp => kvp.Key, kvp => kvp.Value), MaximumStatistics = score.MaximumStatistics.Where(kvp => kvp.Value != 0).ToDictionary(kvp => kvp.Key, kvp => kvp.Value), diff --git a/osu.Game/Scoring/Legacy/LegacyScoreDecoder.cs b/osu.Game/Scoring/Legacy/LegacyScoreDecoder.cs index 1441a14aa0..c5e6e3bcce 100644 --- a/osu.Game/Scoring/Legacy/LegacyScoreDecoder.cs +++ b/osu.Game/Scoring/Legacy/LegacyScoreDecoder.cs @@ -121,6 +121,7 @@ public Score Parse(Stream stream) Debug.Assert(readScore != null); + score.ScoreInfo.OnlineID = readScore.OnlineID; score.ScoreInfo.Statistics = readScore.Statistics; score.ScoreInfo.MaximumStatistics = readScore.MaximumStatistics; score.ScoreInfo.Mods = readScore.Mods.Select(m => m.ToMod(currentRuleset)).ToArray();