summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/OnScreenUI.cpp
diff options
context:
space:
mode:
authorfizzlepicklepop <203144840+fizzlepicklepop@users.noreply.github.com>2025-10-07 22:45:04 -0400
committerfizzlepicklepop <203144840+fizzlepicklepop@users.noreply.github.com>2025-10-07 22:45:04 -0400
commit7ed61c50a1eba9e59d1b28cf801750877b3c0bce (patch)
treeb8683ba4b06220f2110b4ced8882b58b93caeb5d /Source/Core/VideoCommon/OnScreenUI.cpp
parent03ef9b4995aac89eec97541782fb2ab2269bc255 (diff)
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
Diffstat (limited to 'Source/Core/VideoCommon/OnScreenUI.cpp')
-rw-r--r--Source/Core/VideoCommon/OnScreenUI.cpp22
1 files changed, 17 insertions, 5 deletions
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));