diff --git a/pcsx2-qt/MainWindow.cpp b/pcsx2-qt/MainWindow.cpp index 13d55c3cd0..8b27ab10d4 100644 --- a/pcsx2-qt/MainWindow.cpp +++ b/pcsx2-qt/MainWindow.cpp @@ -814,9 +814,6 @@ void MainWindow::onAchievementsHardcoreModeChanged(bool enabled) // disable debugger while hardcore mode is active m_ui.actionDebugger->setDisabled(enabled); - // refresh emulation actions to show/hide load state buttons based on hardcore mode - updateEmulationActions(s_vm_valid, s_vm_valid, false); - if (enabled) { // If PauseOnEntry is enabled, we prompt the user to disable Hardcore Mode @@ -912,7 +909,7 @@ void MainWindow::updateEmulationActions(bool starting, bool running, bool stoppi m_ui.actionPause->setEnabled(running); m_ui.actionScreenshot->setEnabled(running); m_ui.menuChangeDisc->setEnabled(running); - m_ui.menuLoadState->setEnabled(running && !Achievements::IsHardcoreModeActive()); + m_ui.menuLoadState->setEnabled(running); m_ui.menuSaveState->setEnabled(running); m_ui.actionSaveGSDump->setEnabled(running); @@ -921,7 +918,7 @@ void MainWindow::updateEmulationActions(bool starting, bool running, bool stoppi m_ui.actionToolbarPause->setEnabled(running); m_ui.actionToolbarScreenshot->setEnabled(running); m_ui.actionToolbarChangeDisc->setEnabled(running); - m_ui.actionToolbarLoadState->setEnabled(running && !Achievements::IsHardcoreModeActive()); + m_ui.actionToolbarLoadState->setEnabled(running); m_ui.actionToolbarSaveState->setEnabled(running); m_ui.actionViewGameProperties->setEnabled(running); diff --git a/pcsx2-qt/Settings/AchievementSettingsWidget.cpp b/pcsx2-qt/Settings/AchievementSettingsWidget.cpp index 7aabe5c409..d61f84f810 100644 --- a/pcsx2-qt/Settings/AchievementSettingsWidget.cpp +++ b/pcsx2-qt/Settings/AchievementSettingsWidget.cpp @@ -27,7 +27,7 @@ AchievementSettingsWidget::AchievementSettingsWidget(SettingsWindow* settings_di setupTab(m_ui); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.enable, "Achievements", "Enabled", false); - SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.hardcoreMode, "Achievements", "ChallengeMode", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.hardcoreMode, "Achievements", "ChallengeMode", true); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.achievementNotifications, "Achievements", "Notifications", true); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.leaderboardNotifications, "Achievements", "LeaderboardNotifications", true); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.soundEffects, "Achievements", "SoundEffects", true); @@ -49,7 +49,7 @@ AchievementSettingsWidget::AchievementSettingsWidget(SettingsWindow* settings_di SettingWidgetBinder::BindWidgetToFileSetting(sif, m_ui.lbSoundPath, m_ui.lbSoundBrowse, m_ui.lbSoundOpen, m_ui.lbSoundReset, "Achievements", "LBSubmitSoundName", Path::Combine(EmuFolders::Resources, EmuConfig.Achievements.DEFAULT_LBSUBMIT_SOUND_NAME), qApp->translate("AchievementSettingsWidget", AUDIO_FILE_FILTER), true, false); dialog()->registerWidgetHelp(m_ui.enable, tr("Enable Achievements"), tr("Unchecked"), tr("When enabled and logged in, PCSX2 will scan for achievements on startup.")); - dialog()->registerWidgetHelp(m_ui.hardcoreMode, tr("Enable Hardcore Mode"), tr("Unchecked"), tr("\"Challenge\" mode for achievements, including leaderboard tracking. Disables save state, cheats, and slowdown functions.")); + dialog()->registerWidgetHelp(m_ui.hardcoreMode, tr("Enable Hardcore Mode"), tr("Checked"), tr("\"Challenge\" mode for achievements, including leaderboard tracking. Disables save state, cheats, and slowdown functions.")); dialog()->registerWidgetHelp(m_ui.achievementNotifications, tr("Show Achievement Notifications"), tr("Checked"), tr("Displays popup messages on events such as achievement unlocks and game completion.")); dialog()->registerWidgetHelp(m_ui.leaderboardNotifications, tr("Show Leaderboard Notifications"), tr("Checked"), tr("Displays popup messages when starting, submitting, or failing a leaderboard challenge.")); dialog()->registerWidgetHelp(m_ui.soundEffects, tr("Enable Sound Effects"), tr("Checked"), tr("Plays sound effects for events such as achievement unlocks and leaderboard submissions.")); @@ -169,7 +169,7 @@ void AchievementSettingsWidget::onHardcoreModeStateChanged() return; const bool enabled = dialog()->getEffectiveBoolValue("Achievements", "Enabled", false); - const bool challenge = dialog()->getEffectiveBoolValue("Achievements", "ChallengeMode", false); + const bool challenge = dialog()->getEffectiveBoolValue("Achievements", "ChallengeMode", true); if (!enabled || !challenge) return; @@ -250,7 +250,7 @@ void AchievementSettingsWidget::onLoginLogoutPressed() m_ui.enable->setChecked(true); updateEnableState(); } - if (!m_ui.hardcoreMode->isChecked() && Host::GetBaseBoolSettingValue("Achievements", "ChallengeMode", false)) + if (!m_ui.hardcoreMode->isChecked() && Host::GetBaseBoolSettingValue("Achievements", "ChallengeMode", true)) { QSignalBlocker sb(m_ui.hardcoreMode); m_ui.hardcoreMode->setChecked(true); diff --git a/pcsx2/ImGui/FullscreenUI.cpp b/pcsx2/ImGui/FullscreenUI.cpp index 3d3416c127..852ce73c4a 100644 --- a/pcsx2/ImGui/FullscreenUI.cpp +++ b/pcsx2/ImGui/FullscreenUI.cpp @@ -7007,8 +7007,7 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type) case PauseSubMenu::None: { // NOTE: Menu close must come first, because otherwise VM destruction options will race. - const bool can_load_state = s_current_disc_crc != 0 && !Achievements::IsHardcoreModeActive(); - const bool can_save_state = s_current_disc_crc != 0; + const bool can_load_or_save_state = s_current_disc_crc != 0; if (just_focused) ImGui::SetFocusID(ImGui::GetID(FSUI_ICONSTR(ICON_FA_PLAY, "Resume Game")), ImGui::GetCurrentWindow()); @@ -7022,19 +7021,19 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type) DoToggleFrameLimit(); } - if (ActiveButton(FSUI_ICONSTR(ICON_FA_ARROW_ROTATE_LEFT, "Load State"), false, can_load_state)) + if (ActiveButton(FSUI_ICONSTR(ICON_FA_ARROW_ROTATE_LEFT, "Load State"), false, can_load_or_save_state)) { if (OpenSaveStateSelector(true)) s_current_main_window = MainWindowType::None; } - if (ActiveButton(FSUI_ICONSTR(ICON_FA_DOWNLOAD, "Save State"), false, can_save_state)) + if (ActiveButton(FSUI_ICONSTR(ICON_FA_DOWNLOAD, "Save State"), false, can_load_or_save_state)) { if (OpenSaveStateSelector(false)) s_current_main_window = MainWindowType::None; } - if (ActiveButton(FSUI_ICONSTR(ICON_FA_WRENCH, "Game Properties"), false, can_save_state)) + if (ActiveButton(FSUI_ICONSTR(ICON_FA_WRENCH, "Game Properties"), false, can_load_or_save_state)) { SwitchToGameSettings(); } @@ -7074,7 +7073,7 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type) if (ActiveButton(FSUI_ICONSTR(ICON_FA_POWER_OFF, "Close Game"), false)) { // skip submenu when we can't save anyway - if (!can_save_state) + if (!can_load_or_save_state) RequestShutdown(false); else OpenPauseSubMenu(PauseSubMenu::Exit); @@ -7399,7 +7398,7 @@ void FullscreenUI::DrawSaveStateSelector(bool is_loading) if (ActiveButton( is_loading ? FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Load State") : FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Save State"), - false, is_loading ? !Achievements::IsHardcoreModeActive() : true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY)) + false, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY)) { if (is_loading) DoLoadState(std::move(entry.path), entry.slot, false); @@ -8882,7 +8881,7 @@ void FullscreenUI::DrawAchievementsLoginWindow() }); } - if (!Host::GetBaseBoolSettingValue("Achievements", "ChallengeMode", false)) + if (!Host::GetBaseBoolSettingValue("Achievements", "ChallengeMode", true)) { OpenConfirmMessageDialog(FSUI_STR("Enable Hardcore Mode"), FSUI_STR("Hardcore mode is not currently enabled. Enabling hardcore mode allows you to set times, scores, and " @@ -9054,7 +9053,7 @@ void FullscreenUI::DrawAchievementsSettingsPage(std::unique_lock& se check_challenge_state |= DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_DUMBELL, "Hardcore Mode"), FSUI_CSTR( "\"Challenge\" mode for achievements, including leaderboard tracking. Disables save state, cheats, and slowdown functions."), - "Achievements", "ChallengeMode", false, enabled); + "Achievements", "ChallengeMode", true, enabled); DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_BELL, "Achievement Notifications"), FSUI_CSTR("Displays popup messages on events such as achievement unlocks and leaderboard submissions."), "Achievements", "Notifications", true, enabled); @@ -9110,7 +9109,7 @@ void FullscreenUI::DrawAchievementsSettingsPage(std::unique_lock& se "Achievements", "UnofficialTestMode", false, enabled); // Check for challenge mode just being enabled. - if (check_challenge_state && enabled && bsi->GetBoolValue("Achievements", "ChallengeMode", false) && VMManager::HasValidVM()) + if (check_challenge_state && enabled && bsi->GetBoolValue("Achievements", "ChallengeMode", true) && VMManager::HasValidVM()) { // don't bother prompting if the game doesn't have achievements auto lock = Achievements::GetLock(); diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 51ec1f788d..be99e27c55 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -1848,7 +1848,7 @@ Pcsx2Config::AchievementsOptions::AchievementsOptions() { bitset = 0; Enabled = false; - HardcoreMode = false; + HardcoreMode = true; EncoreMode = false; SpectatorMode = false; UnofficialTestMode = false;