summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLillyJadeKatrin <lilly.kitty.1988@gmail.com>2024-04-03 15:55:00 -0400
committerLillyJadeKatrin <lilly.kitty.1988@gmail.com>2024-05-01 07:04:32 -0400
commit0883aa114e1269c56989ad5e2e9503690d11fcd0 (patch)
treebf797d7284c28bb841cbc9b42efd25e882bc5720 /Source/Core
parent9a40ec06b5e64fbfb8ade8a9a5a99500a1852ee9 (diff)
Update hardcore toggle to use rc_client
The client can take care of itself and handle its own hardcore status when it toggles, so I can tell the settings widget to contact the manager directly to set it. Also, gradually reorganizing the settings dialog over the next handful of commits.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/AchievementManager.cpp15
-rw-r--r--Source/Core/Core/AchievementManager.h1
-rw-r--r--Source/Core/Core/Config/AchievementSettings.cpp2
-rw-r--r--Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp19
4 files changed, 22 insertions, 15 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp
index a3b20abbfe..db1856eee8 100644
--- a/Source/Core/Core/AchievementManager.cpp
+++ b/Source/Core/Core/AchievementManager.cpp
@@ -45,7 +45,7 @@ void AchievementManager::Init()
[](const char* message, const rc_client_t* client) {
INFO_LOG_FMT(ACHIEVEMENTS, "{}", message);
});
- rc_client_set_hardcore_enabled(m_client, 0);
+ rc_client_set_hardcore_enabled(m_client, Config::Get(Config::RA_HARDCORE_ENABLED));
rc_client_set_unofficial_enabled(m_client, 1);
m_queue.Reset("AchievementManagerQueue", [](const std::function<void()>& func) { func(); });
m_image_queue.Reset("AchievementManagerImageQueue",
@@ -240,16 +240,19 @@ std::recursive_mutex& AchievementManager::GetLock()
return m_lock;
}
+void AchievementManager::SetHardcoreMode()
+{
+ rc_client_set_hardcore_enabled(m_client, Config::Get(Config::RA_HARDCORE_ENABLED));
+}
+
bool AchievementManager::IsHardcoreModeActive() const
{
std::lock_guard lg{m_lock};
- if (!Config::Get(Config::RA_HARDCORE_ENABLED))
+ if (!rc_client_get_hardcore_enabled(m_client))
return false;
- if (!Core::IsRunning())
+ if (!rc_client_get_game_info(m_client))
return true;
- if (!IsGameLoaded())
- return false;
- return (m_runtime.trigger_count + m_runtime.lboard_count > 0);
+ return rc_client_is_processing_required(m_client);
}
std::string_view AchievementManager::GetPlayerDisplayName() const
diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h
index 41f09f94b7..2a3658e662 100644
--- a/Source/Core/Core/AchievementManager.h
+++ b/Source/Core/Core/AchievementManager.h
@@ -103,6 +103,7 @@ public:
void DoFrame();
std::recursive_mutex& GetLock();
+ void SetHardcoreMode();
bool IsHardcoreModeActive() const;
std::string_view GetPlayerDisplayName() const;
u32 GetPlayerScore() const;
diff --git a/Source/Core/Core/Config/AchievementSettings.cpp b/Source/Core/Core/Config/AchievementSettings.cpp
index 6a23e827e6..8b126e3c54 100644
--- a/Source/Core/Core/Config/AchievementSettings.cpp
+++ b/Source/Core/Core/Config/AchievementSettings.cpp
@@ -16,7 +16,7 @@ const Info<std::string> RA_HOST_URL{{System::Achievements, "Achievements", "Host
const Info<std::string> RA_USERNAME{{System::Achievements, "Achievements", "Username"}, ""};
const Info<std::string> RA_API_TOKEN{{System::Achievements, "Achievements", "ApiToken"}, ""};
const Info<bool> RA_HARDCORE_ENABLED{{System::Achievements, "Achievements", "HardcoreEnabled"},
- false};
+ true};
const Info<bool> RA_PROGRESS_ENABLED{{System::Achievements, "Achievements", "ProgressEnabled"},
false};
const Info<bool> RA_BADGES_ENABLED{{System::Achievements, "Achievements", "BadgesEnabled"}, false};
diff --git a/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp b/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp
index 1c03be7f35..159628f6df 100644
--- a/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp
+++ b/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp
@@ -61,12 +61,6 @@ void AchievementSettingsWidget::CreateLayout()
m_common_login_failed = new QLabel(tr("Login Failed"));
m_common_login_failed->setStyleSheet(QStringLiteral("QLabel { color : red; }"));
m_common_login_failed->setVisible(false);
- m_common_unofficial_enabled_input = new ToolTipCheckBox(tr("Enable Unofficial Achievements"));
- m_common_unofficial_enabled_input->SetDescription(
- tr("Enable unlocking unofficial achievements as well as official "
- "achievements.<br><br>Unofficial achievements may be optional or unfinished achievements "
- "that have not been deemed official by RetroAchievements and may be useful for testing or "
- "simply for fun."));
m_common_hardcore_enabled_input = new ToolTipCheckBox(tr("Enable Hardcore Mode"));
m_common_hardcore_enabled_input->SetDescription(
tr("Enable Hardcore Mode on RetroAchievements.<br><br>Hardcore Mode is intended to provide "
@@ -81,6 +75,12 @@ void AchievementSettingsWidget::CreateLayout()
"playing.</dolphin_emphasis><br>Close your current game before enabling.<br>Be aware that "
"turning Hardcore Mode off while a game is running requires the game to be closed before "
"re-enabling."));
+ m_common_unofficial_enabled_input = new ToolTipCheckBox(tr("Enable Unofficial Achievements"));
+ m_common_unofficial_enabled_input->SetDescription(
+ tr("Enable unlocking unofficial achievements as well as official "
+ "achievements.<br><br>Unofficial achievements may be optional or unfinished achievements "
+ "that have not been deemed official by RetroAchievements and may be useful for testing or "
+ "simply for fun."));
m_common_progress_enabled_input = new ToolTipCheckBox(tr("Enable Progress Notifications"));
m_common_progress_enabled_input->SetDescription(
tr("Enable progress notifications on achievements.<br><br>Displays a brief popup message "
@@ -105,11 +105,13 @@ void AchievementSettingsWidget::CreateLayout()
m_common_layout->addWidget(m_common_login_button);
m_common_layout->addWidget(m_common_logout_button);
m_common_layout->addWidget(m_common_login_failed);
+ m_common_layout->addWidget(new QLabel(tr("Function Settings")));
m_common_layout->addWidget(m_common_hardcore_enabled_input);
- m_common_layout->addWidget(m_common_progress_enabled_input);
- m_common_layout->addWidget(m_common_badges_enabled_input);
m_common_layout->addWidget(m_common_unofficial_enabled_input);
m_common_layout->addWidget(m_common_encore_enabled_input);
+ m_common_layout->addWidget(new QLabel(tr("Display Settings")));
+ m_common_layout->addWidget(m_common_progress_enabled_input);
+ m_common_layout->addWidget(m_common_badges_enabled_input);
m_common_layout->setAlignment(Qt::AlignTop);
setLayout(m_common_layout);
@@ -229,6 +231,7 @@ void AchievementSettingsWidget::Logout()
void AchievementSettingsWidget::ToggleHardcore()
{
SaveSettings();
+ AchievementManager::GetInstance().SetHardcoreMode();
if (Config::Get(Config::RA_HARDCORE_ENABLED))
{
if (Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f)