diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index 11061073fe..1b44ab8a4e 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -141,6 +141,7 @@ void AchievementManager::LoadGameByFilenameAsync(const std::string& iso_path, LoadUnlockData([](ResponseType r_type) {}); ActivateDeactivateAchievements(); } + ActivateDeactivateLeaderboards(); callback(fetch_game_data_response); }); @@ -173,6 +174,23 @@ void AchievementManager::ActivateDeactivateAchievements() } } +void AchievementManager::ActivateDeactivateLeaderboards() +{ + bool leaderboards_enabled = Config::Get(Config::RA_LEADERBOARDS_ENABLED); + for (u32 ix = 0; ix < m_game_data.num_leaderboards; ix++) + { + auto leaderboard = m_game_data.leaderboards[ix]; + if (m_is_game_loaded && leaderboards_enabled && hardcore_mode_enabled) + { + rc_runtime_activate_lboard(&m_runtime, leaderboard.id, leaderboard.definition, nullptr, 0); + } + else + { + rc_runtime_deactivate_lboard(&m_runtime, m_game_data.leaderboards[ix].id); + } + } +} + void AchievementManager::CloseGame() { m_is_game_loaded = false; @@ -180,6 +198,7 @@ void AchievementManager::CloseGame() m_queue.Cancel(); m_unlock_map.clear(); ActivateDeactivateAchievements(); + ActivateDeactivateLeaderboards(); } void AchievementManager::Logout() diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h index 7eb6397e49..d2e37329f0 100644 --- a/Source/Core/Core/AchievementManager.h +++ b/Source/Core/Core/AchievementManager.h @@ -41,6 +41,7 @@ public: void LoadUnlockData(const ResponseCallback& callback); void ActivateDeactivateAchievements(); + void ActivateDeactivateLeaderboards(); void CloseGame(); void Logout(); void Shutdown(); diff --git a/Source/Core/Core/Config/AchievementSettings.cpp b/Source/Core/Core/Config/AchievementSettings.cpp index 92a761f6a6..6da342cbc4 100644 --- a/Source/Core/Core/Config/AchievementSettings.cpp +++ b/Source/Core/Core/Config/AchievementSettings.cpp @@ -15,6 +15,8 @@ const Info RA_USERNAME{{System::Achievements, "Achievements", "User const Info RA_API_TOKEN{{System::Achievements, "Achievements", "ApiToken"}, ""}; const Info RA_ACHIEVEMENTS_ENABLED{ {System::Achievements, "Achievements", "AchievementsEnabled"}, false}; +const Info RA_LEADERBOARDS_ENABLED{ + {System::Achievements, "Achievements", "LeaderboardsEnabled"}, false}; const Info RA_UNOFFICIAL_ENABLED{{System::Achievements, "Achievements", "UnofficialEnabled"}, false}; const Info RA_ENCORE_ENABLED{{System::Achievements, "Achievements", "EncoreEnabled"}, false}; diff --git a/Source/Core/Core/Config/AchievementSettings.h b/Source/Core/Core/Config/AchievementSettings.h index 13da23eafa..f49537ec39 100644 --- a/Source/Core/Core/Config/AchievementSettings.h +++ b/Source/Core/Core/Config/AchievementSettings.h @@ -12,6 +12,7 @@ extern const Info RA_ENABLED; extern const Info RA_USERNAME; extern const Info RA_API_TOKEN; extern const Info RA_ACHIEVEMENTS_ENABLED; +extern const Info RA_LEADERBOARDS_ENABLED; extern const Info RA_UNOFFICIAL_ENABLED; extern const Info RA_ENCORE_ENABLED; } // namespace Config