From 7ed61c50a1eba9e59d1b28cf801750877b3c0bce Mon Sep 17 00:00:00 2001 From: fizzlepicklepop <203144840+fizzlepicklepop@users.noreply.github.com> Date: Tue, 7 Oct 2025 22:45:04 -0400 Subject: Add toggles for Speedrun timer + Achievement badges visibility Added some new visibility toggles so players can choose what to show (or hide) during their RetroAchievements runs: Toggle for the Speedrun Leaderboards timer Toggle for Achievement Challenge badges --- Source/Core/VideoCommon/OnScreenUI.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'Source/Core/VideoCommon/OnScreenUI.cpp') diff --git a/Source/Core/VideoCommon/OnScreenUI.cpp b/Source/Core/VideoCommon/OnScreenUI.cpp index 4689bb6321..883d810f70 100644 --- a/Source/Core/VideoCommon/OnScreenUI.cpp +++ b/Source/Core/VideoCommon/OnScreenUI.cpp @@ -9,6 +9,7 @@ #include "Core/AchievementManager.h" #include "Core/Config/GraphicsSettings.h" +#include "Core/Config/AchievementSettings.h" #include "Core/Config/MainSettings.h" #include "Core/Config/NetplaySettings.h" #include "Core/Movie.h" @@ -324,10 +325,21 @@ void OnScreenUI::DrawChallengesAndLeaderboards() #ifdef USE_RETRO_ACHIEVEMENTS auto& instance = AchievementManager::GetInstance(); std::lock_guard lg{instance.GetLock()}; - if (instance.AreChallengesUpdated()) + const bool challenge_indicators_enabled = Config::Get(Config::RA_CHALLENGE_INDICATORS_ENABLED); + const bool challenges_updated = instance.AreChallengesUpdated(); + const auto& challenges = instance.GetActiveChallenges(); + + if (!challenge_indicators_enabled) + { + if (challenges_updated) + instance.ResetChallengesUpdated(); + if (!m_challenge_texture_map.empty()) + m_challenge_texture_map.clear(); + } + else if (challenges_updated || m_challenge_texture_map.size() != challenges.size()) { - instance.ResetChallengesUpdated(); - const auto& challenges = instance.GetActiveChallenges(); + if (challenges_updated) + instance.ResetChallengesUpdated(); m_challenge_texture_map.clear(); for (const auto& name : challenges) { @@ -343,7 +355,7 @@ void OnScreenUI::DrawChallengesAndLeaderboards() } float leaderboard_y = ImGui::GetIO().DisplaySize.y; - if (!m_challenge_texture_map.empty()) + if (challenge_indicators_enabled && !m_challenge_texture_map.empty()) { float scale = ImGui::GetIO().DisplaySize.y / 1024.0; ImGui::SetNextWindowSize(ImVec2(0, 0)); @@ -367,7 +379,7 @@ void OnScreenUI::DrawChallengesAndLeaderboards() } const auto& leaderboard_progress = instance.GetActiveLeaderboards(); - if (!leaderboard_progress.empty()) + if (Config::Get(Config::RA_LEADERBOARD_TRACKER_ENABLED) && !leaderboard_progress.empty()) { ImGui::SetNextWindowPos(ImVec2(ImGui::GetIO().DisplaySize.x, leaderboard_y), 0, ImVec2(1.0, 1.0)); -- cgit v1.2.3 From 3cb8f234a73ffc83761d4d3790fcdaf2fda13382 Mon Sep 17 00:00:00 2001 From: fizzlepicklepop <203144840+fizzlepicklepop@users.noreply.github.com> Date: Tue, 7 Oct 2025 23:57:53 -0400 Subject: fixed the lint error --- Source/Core/VideoCommon/OnScreenUI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/OnScreenUI.cpp') diff --git a/Source/Core/VideoCommon/OnScreenUI.cpp b/Source/Core/VideoCommon/OnScreenUI.cpp index 883d810f70..834971fa0b 100644 --- a/Source/Core/VideoCommon/OnScreenUI.cpp +++ b/Source/Core/VideoCommon/OnScreenUI.cpp @@ -8,8 +8,8 @@ #include "Common/Timer.h" #include "Core/AchievementManager.h" -#include "Core/Config/GraphicsSettings.h" #include "Core/Config/AchievementSettings.h" +#include "Core/Config/GraphicsSettings.h" #include "Core/Config/MainSettings.h" #include "Core/Config/NetplaySettings.h" #include "Core/Movie.h" -- cgit v1.2.3