mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
Disable cheats in hardcore mode
RetroAchievements does not allow cheats such as Action Replay or Gecko in hardcore mode, for fairness.
This commit is contained in:
@ -143,6 +143,12 @@ void CheatsManager::RefreshCodeTabs(Core::State state, bool force)
|
||||
connect(m_ar_code, &ARCodeWidget::OpenGeneralSettings, this, &CheatsManager::OpenGeneralSettings);
|
||||
connect(m_gecko_code, &GeckoCodeWidget::OpenGeneralSettings, this,
|
||||
&CheatsManager::OpenGeneralSettings);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(m_ar_code, &ARCodeWidget::OpenAchievementSettings, this,
|
||||
&CheatsManager::OpenAchievementSettings);
|
||||
connect(m_gecko_code, &GeckoCodeWidget::OpenAchievementSettings, this,
|
||||
&CheatsManager::OpenAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
}
|
||||
|
||||
void CheatsManager::CreateWidgets()
|
||||
|
@ -37,6 +37,9 @@ public:
|
||||
|
||||
signals:
|
||||
void OpenGeneralSettings();
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
void OpenAchievementSettings();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
void ShowMemory(u32 address);
|
||||
void RequestWatch(QString name, u32 address);
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include "DolphinQt/Config/CheatCodeEditor.h"
|
||||
#include "DolphinQt/Config/CheatWarningWidget.h"
|
||||
#include "DolphinQt/Config/HardcoreWarningWidget.h"
|
||||
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
|
||||
#include "DolphinQt/QtUtils/SetWindowDecorations.h"
|
||||
|
||||
@ -55,6 +56,9 @@ ARCodeWidget::~ARCodeWidget() = default;
|
||||
void ARCodeWidget::CreateWidgets()
|
||||
{
|
||||
m_warning = new CheatWarningWidget(m_game_id, m_restart_required, this);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
m_hc_warning = new HardcoreWarningWidget(this);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
m_code_list = new QListWidget;
|
||||
m_code_add = new NonDefaultQPushButton(tr("&Add New Code..."));
|
||||
m_code_edit = new NonDefaultQPushButton(tr("&Edit Code..."));
|
||||
@ -76,6 +80,9 @@ void ARCodeWidget::CreateWidgets()
|
||||
QVBoxLayout* layout = new QVBoxLayout;
|
||||
|
||||
layout->addWidget(m_warning);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
layout->addWidget(m_hc_warning);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
layout->addWidget(m_code_list);
|
||||
layout->addLayout(button_layout);
|
||||
|
||||
@ -86,6 +93,10 @@ void ARCodeWidget::ConnectWidgets()
|
||||
{
|
||||
connect(m_warning, &CheatWarningWidget::OpenCheatEnableSettings, this,
|
||||
&ARCodeWidget::OpenGeneralSettings);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(m_hc_warning, &HardcoreWarningWidget::OpenAchievementSettings, this,
|
||||
&ARCodeWidget::OpenAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
connect(m_code_list, &QListWidget::itemChanged, this, &ARCodeWidget::OnItemChanged);
|
||||
connect(m_code_list, &QListWidget::itemSelectionChanged, this, &ARCodeWidget::OnSelectionChanged);
|
||||
|
@ -16,6 +16,9 @@ struct ARCode;
|
||||
}
|
||||
|
||||
class CheatWarningWidget;
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
class HardcoreWarningWidget;
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
class QLabel;
|
||||
class QListWidget;
|
||||
class QListWidgetItem;
|
||||
@ -32,6 +35,9 @@ public:
|
||||
|
||||
signals:
|
||||
void OpenGeneralSettings();
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
void OpenAchievementSettings();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
private:
|
||||
void OnSelectionChanged();
|
||||
@ -56,6 +62,9 @@ private:
|
||||
u16 m_game_revision;
|
||||
|
||||
CheatWarningWidget* m_warning;
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
HardcoreWarningWidget* m_hc_warning;
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
QListWidget* m_code_list;
|
||||
QPushButton* m_code_add;
|
||||
QPushButton* m_code_edit;
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include "DolphinQt/Config/CheatCodeEditor.h"
|
||||
#include "DolphinQt/Config/CheatWarningWidget.h"
|
||||
#include "DolphinQt/Config/HardcoreWarningWidget.h"
|
||||
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
||||
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
|
||||
#include "DolphinQt/QtUtils/SetWindowDecorations.h"
|
||||
@ -61,6 +62,9 @@ GeckoCodeWidget::~GeckoCodeWidget() = default;
|
||||
void GeckoCodeWidget::CreateWidgets()
|
||||
{
|
||||
m_warning = new CheatWarningWidget(m_game_id, m_restart_required, this);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
m_hc_warning = new HardcoreWarningWidget(this);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
m_code_list = new QListWidget;
|
||||
m_name_label = new QLabel;
|
||||
m_creator_label = new QLabel;
|
||||
@ -102,6 +106,9 @@ void GeckoCodeWidget::CreateWidgets()
|
||||
auto* layout = new QVBoxLayout;
|
||||
|
||||
layout->addWidget(m_warning);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
layout->addWidget(m_hc_warning);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
layout->addWidget(m_code_list);
|
||||
|
||||
auto* info_layout = new QFormLayout;
|
||||
@ -150,6 +157,10 @@ void GeckoCodeWidget::ConnectWidgets()
|
||||
connect(m_download_codes, &QPushButton::clicked, this, &GeckoCodeWidget::DownloadCodes);
|
||||
connect(m_warning, &CheatWarningWidget::OpenCheatEnableSettings, this,
|
||||
&GeckoCodeWidget::OpenGeneralSettings);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(m_hc_warning, &HardcoreWarningWidget::OpenAchievementSettings, this,
|
||||
&GeckoCodeWidget::OpenAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
}
|
||||
|
||||
void GeckoCodeWidget::OnSelectionChanged()
|
||||
|
@ -11,6 +11,9 @@
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
class CheatWarningWidget;
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
class HardcoreWarningWidget;
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
class QLabel;
|
||||
class QListWidget;
|
||||
class QListWidgetItem;
|
||||
@ -32,6 +35,9 @@ public:
|
||||
|
||||
signals:
|
||||
void OpenGeneralSettings();
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
void OpenAchievementSettings();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
private:
|
||||
void OnSelectionChanged();
|
||||
@ -56,6 +62,9 @@ private:
|
||||
u16 m_game_revision;
|
||||
|
||||
CheatWarningWidget* m_warning;
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
HardcoreWarningWidget* m_hc_warning;
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
QListWidget* m_code_list;
|
||||
QLabel* m_name_label;
|
||||
QLabel* m_creator_label;
|
||||
|
@ -52,6 +52,10 @@ PropertiesDialog::PropertiesDialog(QWidget* parent, const UICommon::GameFile& ga
|
||||
|
||||
connect(ar, &ARCodeWidget::OpenGeneralSettings, this, &PropertiesDialog::OpenGeneralSettings);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(ar, &ARCodeWidget::OpenAchievementSettings, this,
|
||||
&PropertiesDialog::OpenAchievementSettings);
|
||||
connect(gecko, &GeckoCodeWidget::OpenAchievementSettings, this,
|
||||
&PropertiesDialog::OpenAchievementSettings);
|
||||
connect(patches, &PatchesWidget::OpenAchievementSettings, this,
|
||||
&PropertiesDialog::OpenAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
@ -247,6 +247,8 @@ MainWindow::MainWindow(std::unique_ptr<BootParameters> boot_parameters,
|
||||
&MainWindow::ShowGeneralWindow);
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(m_cheats_manager, &CheatsManager::OpenAchievementSettings, this,
|
||||
&MainWindow::ShowAchievementSettings);
|
||||
connect(m_game_list, &GameList::OpenAchievementSettings, this,
|
||||
&MainWindow::ShowAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
@ -2027,6 +2029,12 @@ void MainWindow::ShowRiivolutionBootWidget(const UICommon::GameFile& game)
|
||||
RiivolutionBootWidget w(disc.volume->GetGameID(), disc.volume->GetRevision(),
|
||||
disc.volume->GetDiscNumber(), game.GetFilePath(), this);
|
||||
SetQWidgetWindowDecorations(&w);
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
connect(&w, &RiivolutionBootWidget::OpenAchievementSettings, this,
|
||||
&MainWindow::ShowAchievementSettings);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
w.exec();
|
||||
if (!w.ShouldBoot())
|
||||
return;
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <QVBoxLayout>
|
||||
#include <QWidget>
|
||||
|
||||
#include "Core/Config/AchievementSettings.h"
|
||||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/Config/UISettings.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
@ -84,7 +85,12 @@ void GeneralPane::OnEmulationStateChanged(Core::State state)
|
||||
const bool running = state != Core::State::Uninitialized;
|
||||
|
||||
m_checkbox_dualcore->setEnabled(!running);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
bool hardcore = Config::Get(Config::RA_HARDCORE_ENABLED);
|
||||
m_checkbox_cheats->setEnabled(!running && !hardcore);
|
||||
#else // USE_RETRO_ACHIEVEMENTS
|
||||
m_checkbox_cheats->setEnabled(!running);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
m_checkbox_override_region_settings->setEnabled(!running);
|
||||
#ifdef USE_DISCORD_PRESENCE
|
||||
m_checkbox_discord_presence->setEnabled(!running);
|
||||
|
Reference in New Issue
Block a user