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
This commit is contained in:
Admiral H. Curtiss 2024-07-15 21:44:48 +02:00
parent 549b16d442
commit d665175a2b
No known key found for this signature in database
GPG key ID: F051B4C4044F33FB

View file

@ -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)