Achievements: Add leaderboard toggle (+ some minor fixes)

This commit is contained in:
Connor McLaughlin
2022-09-21 23:45:24 +10:00
parent 3760849ac4
commit d26fef3e4e
8 changed files with 91 additions and 33 deletions

View File

@ -404,6 +404,11 @@ bool Achievements::ChallengeModeActive()
return s_challenge_mode;
}
bool Achievements::LeaderboardsActive()
{
return ChallengeModeActive() && g_settings.achievements_leaderboards;
}
bool Achievements::IsTestModeActive()
{
return g_settings.achievements_test_mode;
@ -485,11 +490,11 @@ void Achievements::UpdateSettings(const Settings& old_config)
if (g_settings.achievements_challenge_mode != old_config.achievements_challenge_mode)
{
// Hardcore mode can only be enabled through reset (ResetChallengeMode()).
if (s_challenge_mode && !old_config.achievements_challenge_mode)
if (s_challenge_mode && !g_settings.achievements_challenge_mode)
{
ResetChallengeMode();
}
else if (g_settings.achievements_challenge_mode)
else if (!s_challenge_mode && g_settings.achievements_challenge_mode)
{
Host::AddKeyedOSDMessage(
"challenge_mode_reset",
@ -1013,14 +1018,8 @@ void Achievements::DisplayAchievementSummary()
if (GetLeaderboardCount() > 0)
{
summary.push_back('\n');
if (ChallengeModeActive())
{
summary.append(Host::TranslateString("Achievements", "Leaderboards are enabled."));
}
else
{
summary.append(Host::TranslateString("Achievements", "Leaderboards are disabled because hardcore mode is off."));
}
if (LeaderboardsActive())
summary.append("Leaderboard submission is enabled.");
}
Host::RunOnCPUThread([title = std::move(title), summary = std::move(summary), icon = s_game_icon]() {
@ -1822,6 +1821,13 @@ void Achievements::SubmitLeaderboard(u32 leaderboard_id, int value)
return;
}
if (!LeaderboardsActive())
{
Log_WarningPrintf("Skipping sending leaderboard %u result to server because leaderboards are disabled.",
leaderboard_id);
return;
}
std::unique_lock lock(s_achievements_mutex);
s_submitting_lboard_id = leaderboard_id;

View File

@ -72,6 +72,7 @@ static ALWAYS_INLINE bool IsUsingRAIntegration()
bool IsActive();
bool IsLoggedIn();
bool ChallengeModeActive();
bool LeaderboardsActive();
bool IsTestModeActive();
bool IsUnofficialTestModeActive();
bool IsRichPresenceEnabled();

View File

@ -3572,6 +3572,9 @@ void FullscreenUI::DrawAchievementsSettingsPage()
DrawToggleSetting(bsi, ICON_FA_LIST_OL " Leaderboards",
"Enables tracking and submission of leaderboards in supported games.", "Cheevos", "Leaderboards",
true, enabled && challenge);
DrawToggleSetting(bsi, ICON_FA_HEADPHONES " Sound Effects",
"Plays sound effects for events such as achievement unlocks and leaderboard submissions.",
"Cheevos", "SoundEffects", true, enabled);
DrawToggleSetting(bsi, ICON_FA_MEDAL " Test Unofficial Achievements",
"When enabled, DuckStation will list achievements from unofficial sets. These achievements are not "
"tracked by RetroAchievements.",