From cb05ed29fe84fd8d26d4f25073676a1c60203cad Mon Sep 17 00:00:00 2001 From: LillyJadeKatrin Date: Fri, 14 Jun 2024 00:37:45 -0400 Subject: [PATCH] Only Display One Progress At A Time Add a two second timer to Achievement Progress Indicators to wait until two seconds after the previous message (when it should have decayed out automatically) before posting any new ones. --- Source/Core/Core/AchievementManager.cpp | 7 ++++++- Source/Core/Core/AchievementManager.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index a91daa4fce..c4cd632221 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -812,11 +812,16 @@ void AchievementManager::HandleAchievementChallengeIndicatorHideEvent( void AchievementManager::HandleAchievementProgressIndicatorShowEvent( const rc_client_event_t* client_event) { - const auto& instance = AchievementManager::GetInstance(); + auto& instance = AchievementManager::GetInstance(); + auto current_time = std::chrono::steady_clock::now(); + const auto message_wait_time = std::chrono::milliseconds{OSD::Duration::SHORT}; + if (current_time - instance.m_last_progress_message < message_wait_time) + return; OSD::AddMessage(fmt::format("{} {}", client_event->achievement->title, client_event->achievement->measured_progress), OSD::Duration::SHORT, OSD::Color::GREEN, &instance.GetAchievementBadge(client_event->achievement->id, false)); + instance.m_last_progress_message = current_time; } void AchievementManager::HandleGameCompletedEvent(const rc_client_event_t* client_event, diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h index f538832ade..a86abeab13 100644 --- a/Source/Core/Core/AchievementManager.h +++ b/Source/Core/Core/AchievementManager.h @@ -201,6 +201,7 @@ private: std::unordered_map m_locked_badges; RichPresence m_rich_presence; std::chrono::steady_clock::time_point m_last_rp_time = std::chrono::steady_clock::now(); + std::chrono::steady_clock::time_point m_last_progress_message = std::chrono::steady_clock::now(); std::unordered_map m_leaderboard_map; NamedBadgeMap m_active_challenges;