From d665175a2bfc8c0867bf14578d1f12b57b5fca66 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Mon, 15 Jul 2024 21:44:48 +0200 Subject: [PATCH] AchievementManager: Return the default player and game badges if the current one isn't loaded yet This saves some copying and fixes an issue where the default badges disappear after a game was closed --- Source/Core/Core/AchievementManager.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index c203af7a56..a1dd5f851f 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -440,7 +440,7 @@ u32 AchievementManager::GetPlayerScore() const const AchievementManager::Badge& AchievementManager::GetPlayerBadge() const { - return m_player_badge; + return m_player_badge.data.empty() ? m_default_player_badge : m_player_badge; } std::string_view AchievementManager::GetGameDisplayName() const @@ -460,7 +460,7 @@ rc_api_fetch_game_data_response_t* AchievementManager::GetGameData() const AchievementManager::Badge& AchievementManager::GetGameBadge() const { - return m_game_badge; + return m_game_badge.data.empty() ? m_default_game_badge : m_game_badge; } const AchievementManager::Badge& AchievementManager::GetAchievementBadge(AchievementId id, @@ -696,7 +696,6 @@ void AchievementManager::LoadDefaultBadges() DEFAULT_PLAYER_BADGE_FILENAME); } } - m_player_badge = m_default_player_badge; if (m_default_game_badge.data.empty()) { @@ -707,7 +706,6 @@ void AchievementManager::LoadDefaultBadges() DEFAULT_GAME_BADGE_FILENAME); } } - m_game_badge = m_default_game_badge; if (m_default_unlocked_badge.data.empty()) { @@ -888,7 +886,7 @@ void AchievementManager::DisplayWelcomeMessage() const u32 color = rc_client_get_hardcore_enabled(m_client) ? OSD::Color::YELLOW : OSD::Color::CYAN; - OSD::AddMessage("", OSD::Duration::VERY_LONG, OSD::Color::GREEN, &m_game_badge); + OSD::AddMessage("", OSD::Duration::VERY_LONG, OSD::Color::GREEN, &GetGameBadge()); auto info = rc_client_get_game_info(m_client); if (!info) { @@ -1033,7 +1031,7 @@ void AchievementManager::HandleGameCompletedEvent(const rc_client_event_t* clien OSD::AddMessage(fmt::format("Congratulations! {} has {} {}", user_info->display_name, hardcore ? "mastered" : "completed", game_info->title), OSD::Duration::VERY_LONG, hardcore ? OSD::Color::YELLOW : OSD::Color::CYAN, - &AchievementManager::GetInstance().m_game_badge); + &AchievementManager::GetInstance().GetGameBadge()); } void AchievementManager::HandleResetEvent(const rc_client_event_t* client_event)