From f082b60c9baddf46a52dd90c8d40cc408d073557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 7 Jul 2025 09:53:26 +0200 Subject: [PATCH] Track count of times gameplay was paused on `ScoreInfo` --- osu.Game.Tests/Visual/Gameplay/TestScenePause.cs | 2 ++ osu.Game/Scoring/ScoreInfo.cs | 3 +++ osu.Game/Screens/Play/Player.cs | 2 +- osu.Game/Screens/Play/SubmittingPlayer.cs | 12 ++++++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs index 58fe6e8e56..03f5dacfa0 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs @@ -69,6 +69,7 @@ namespace osu.Game.Tests.Visual.Gameplay pauseViaBackAction(); pauseViaBackAction(); confirmPausedWithNoOverlay(); + AddAssert("score pause count incremented", () => Player.Score.ScoreInfo.PauseCount, () => Is.EqualTo(1)); } [Test] @@ -77,6 +78,7 @@ namespace osu.Game.Tests.Visual.Gameplay pauseViaPauseGameplayAction(); pauseViaPauseGameplayAction(); confirmPausedWithNoOverlay(); + AddAssert("score pause count incremented", () => Player.Score.ScoreInfo.PauseCount, () => Is.EqualTo(1)); } [Test] diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index a3dabc7945..3b0c53e9b3 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -155,6 +155,9 @@ namespace osu.Game.Scoring [MapTo("MaximumStatistics")] public string MaximumStatisticsJson { get; set; } = string.Empty; + [Ignored] + public int PauseCount { get; set; } + public ScoreInfo(BeatmapInfo? beatmap = null, RulesetInfo? ruleset = null, RealmUser? realmUser = null) { Ruleset = ruleset ?? new RulesetInfo(); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 6ee3ed13a0..2a98527c16 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -1046,7 +1046,7 @@ namespace osu.Game.Screens.Play // already resuming && !IsResuming; - public bool Pause() + public virtual bool Pause() { if (!pausingSupportedByCurrentState) return false; diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs index 7becb2b33e..c950621134 100644 --- a/osu.Game/Screens/Play/SubmittingPlayer.cs +++ b/osu.Game/Screens/Play/SubmittingPlayer.cs @@ -234,6 +234,18 @@ namespace osu.Game.Screens.Play spectatorClient.BeginPlaying(token, GameplayState, Score); } + public override bool Pause() + { + bool wasPaused = GameplayClockContainer.IsPaused.Value; + + bool paused = base.Pause(); + + if (!wasPaused && paused) + Score.ScoreInfo.PauseCount++; + + return paused; + } + protected override void OnFail() { base.OnFail();