diff options
| author | LillyJadeKatrin <lilly.kitty.1988@gmail.com> | 2023-11-15 10:46:42 -0500 |
|---|---|---|
| committer | LillyJadeKatrin <lilly.kitty.1988@gmail.com> | 2023-12-02 16:41:15 -0500 |
| commit | 138e68ef9f7a7cb2bc8640c876ffc800a4d05baf (patch) | |
| tree | 625bba5dbfc71e49cc429d3dabe325476979b997 /Source/Core | |
| parent | c54e8d733fce6bd1988f694ecc5099b12d166e75 (diff) | |
Added Hardcore flag to Achievement Settings
Hardcore Mode is a RetroAchievements feature for enabling as close to original hardware as possible, to keep a fair, challenging, and competitive playing field for achievements (which get tallied differently and emphasized more in hardcore) and leaderboards (where it is mandatory) at the cost of several common emulator features that provide advantages, such as state loading and slower emulation speeds.
This commit just adds the flag to the AchievementSettings, with more to come.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/AchievementManager.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/Core/AchievementManager.h | 3 | ||||
| -rw-r--r-- | Source/Core/Core/Config/AchievementSettings.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/Core/Config/AchievementSettings.h | 4 |
4 files changed, 23 insertions, 1 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index 54671a1388..6fab056c79 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -633,6 +633,18 @@ std::recursive_mutex* AchievementManager::GetLock() return &m_lock; } +bool AchievementManager::IsHardcoreModeActive() const +{ + std::lock_guard lg{m_lock}; + if (!Config::Get(Config::RA_HARDCORE_ENABLED)) + return false; + if (!Core::IsRunning()) + return true; + if (!IsGameLoaded()) + return false; + return (m_runtime.trigger_count + m_runtime.lboard_count > 0); +} + std::string AchievementManager::GetPlayerDisplayName() const { return IsLoggedIn() ? m_display_name : ""; diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h index be2469dc9e..e790e0bc1c 100644 --- a/Source/Core/Core/AchievementManager.h +++ b/Source/Core/Core/AchievementManager.h @@ -119,6 +119,7 @@ public: void AchievementEventHandler(const rc_runtime_event_t* runtime_event); std::recursive_mutex* GetLock(); + bool IsHardcoreModeActive() const; std::string GetPlayerDisplayName() const; u32 GetPlayerScore() const; const BadgeStatus& GetPlayerBadge() const; @@ -190,7 +191,7 @@ private: Common::WorkQueueThread<std::function<void()>> m_queue; Common::WorkQueueThread<std::function<void()>> m_image_queue; - std::recursive_mutex m_lock; + mutable std::recursive_mutex m_lock; }; // class AchievementManager #endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/Core/Config/AchievementSettings.cpp b/Source/Core/Core/Config/AchievementSettings.cpp index a425605f8c..5edaa6a54c 100644 --- a/Source/Core/Core/Config/AchievementSettings.cpp +++ b/Source/Core/Core/Config/AchievementSettings.cpp @@ -1,6 +1,7 @@ // Copyright 2023 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#ifdef USE_RETRO_ACHIEVEMENTS #include "Core/Config/AchievementSettings.h" #include <string> @@ -19,6 +20,8 @@ const Info<bool> RA_LEADERBOARDS_ENABLED{ {System::Achievements, "Achievements", "LeaderboardsEnabled"}, false}; const Info<bool> RA_RICH_PRESENCE_ENABLED{ {System::Achievements, "Achievements", "RichPresenceEnabled"}, false}; +const Info<bool> RA_HARDCORE_ENABLED{{System::Achievements, "Achievements", "HardcoreEnabled"}, + false}; const Info<bool> RA_PROGRESS_ENABLED{{System::Achievements, "Achievements", "ProgressEnabled"}, false}; const Info<bool> RA_BADGES_ENABLED{{System::Achievements, "Achievements", "BadgesEnabled"}, false}; @@ -26,3 +29,5 @@ const Info<bool> RA_UNOFFICIAL_ENABLED{{System::Achievements, "Achievements", "U false}; const Info<bool> RA_ENCORE_ENABLED{{System::Achievements, "Achievements", "EncoreEnabled"}, false}; } // namespace Config + +#endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/Core/Config/AchievementSettings.h b/Source/Core/Core/Config/AchievementSettings.h index b17d00c65f..15277ca043 100644 --- a/Source/Core/Core/Config/AchievementSettings.h +++ b/Source/Core/Core/Config/AchievementSettings.h @@ -1,6 +1,7 @@ // Copyright 2023 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#ifdef USE_RETRO_ACHIEVEMENTS #pragma once #include "Common/Config/Config.h" @@ -14,8 +15,11 @@ extern const Info<std::string> RA_API_TOKEN; extern const Info<bool> RA_ACHIEVEMENTS_ENABLED; extern const Info<bool> RA_LEADERBOARDS_ENABLED; extern const Info<bool> RA_RICH_PRESENCE_ENABLED; +extern const Info<bool> RA_HARDCORE_ENABLED; extern const Info<bool> RA_PROGRESS_ENABLED; extern const Info<bool> RA_BADGES_ENABLED; extern const Info<bool> RA_UNOFFICIAL_ENABLED; extern const Info<bool> RA_ENCORE_ENABLED; } // namespace Config + +#endif // USE_RETRO_ACHIEVEMENTS |
