From 99fbd2827bac25729328b7a2069e4a2a8802edaa Mon Sep 17 00:00:00 2001 From: Silent Date: Sat, 19 Jun 2021 17:15:47 +0200 Subject: [PATCH] Allow submitting entries to Leaderboards only in Hardcore Mode. This is a requirement from RetroAchievements. --- src/frontend-common/cheevos.cpp | 20 ++++++++++++++++++++ src/frontend-common/fullscreen_ui.cpp | 12 ++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/frontend-common/cheevos.cpp b/src/frontend-common/cheevos.cpp index 674a7b1c2..f76444f37 100644 --- a/src/frontend-common/cheevos.cpp +++ b/src/frontend-common/cheevos.cpp @@ -587,6 +587,19 @@ static void DisplayAchievementSummary() { summary = GetHostInterface()->TranslateString("Cheevos", "This game has no achievements."); } + if (GetLeaderboardCount() > 0) + { + summary.push_back('\n'); + if (g_challenge_mode) + { + summary.append(GetHostInterface()->TranslateString("Cheevos", "Leaderboards are enabled.")); + } + else + { + summary.append( + GetHostInterface()->TranslateString("Cheevos", "Leaderboards are DISABLED because Hardcore Mode is off.")); + } + } ImGuiFullscreen::AddNotification(10.0f, std::move(title), std::move(summary), s_game_icon); } @@ -1346,6 +1359,13 @@ void SubmitLeaderboard(u32 leaderboard_id, int value) return; } + if (!g_challenge_mode) + { + Log_WarningPrintf("Skipping sending leaderboard %u result to server because Challenge mode is off.", + leaderboard_id); + return; + } + char url[512]; rc_url_submit_lboard(url, sizeof(url), s_username.c_str(), s_login_token.c_str(), leaderboard_id, value); s_http_downloader->CreateRequest(url, SubmitLeaderboardCallback); diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp index 33bb305d6..a506f7b39 100644 --- a/src/frontend-common/fullscreen_ui.cpp +++ b/src/frontend-common/fullscreen_ui.cpp @@ -4505,6 +4505,18 @@ void DrawLeaderboardsWindow() ImGui::PushFont(g_medium_font); ImGui::RenderTextClipped(summary_bb.Min, summary_bb.Max, text.GetCharArray(), text.GetCharArray() + text.GetLength(), nullptr, ImVec2(0.0f, 0.0f), &summary_bb); + + if (!IsCheevosHardcoreModeActive()) + { + const ImRect hardcore_warning_bb(ImVec2(left, top), ImVec2(right, top + g_medium_font->FontSize)); + top += g_medium_font->FontSize + spacing; + + ImGui::RenderTextClipped( + hardcore_warning_bb.Min, hardcore_warning_bb.Max, + "Submitting scores is DISABLED because Hardcore Mode is off. Leaderboards are read-only.", nullptr, nullptr, + ImVec2(0.0f, 0.0f), &hardcore_warning_bb); + } + ImGui::PopFont(); }