mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-19 00:35:46 -04:00
Achievements: Add leaderboard toggle (+ some minor fixes)
This commit is contained in:
@ -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;
|
||||
|
@ -72,6 +72,7 @@ static ALWAYS_INLINE bool IsUsingRAIntegration()
|
||||
bool IsActive();
|
||||
bool IsLoggedIn();
|
||||
bool ChallengeModeActive();
|
||||
bool LeaderboardsActive();
|
||||
bool IsTestModeActive();
|
||||
bool IsUnofficialTestModeActive();
|
||||
bool IsRichPresenceEnabled();
|
||||
|
@ -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.",
|
||||
|
Reference in New Issue
Block a user