diff --git a/Core/Config.cpp b/Core/Config.cpp index c063bb1546..16931b749c 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -315,7 +315,7 @@ static const ConfigSetting achievementSettings[] = { // Core settings ConfigSetting("AchievementsEnable", &g_Config.bAchievementsEnable, true, CfgFlag::DEFAULT), ConfigSetting("AchievementsEnableRAIntegration", &g_Config.bAchievementsEnableRAIntegration, false, CfgFlag::DEFAULT), - ConfigSetting("AchievementsChallengeMode", &g_Config.bAchievementsChallengeMode, true, CfgFlag::PER_GAME | CfgFlag::DEFAULT), + ConfigSetting("AchievementsChallengeMode", &g_Config.bAchievementsHardcoreMode, true, CfgFlag::PER_GAME | CfgFlag::DEFAULT), ConfigSetting("AchievementsEncoreMode", &g_Config.bAchievementsEncoreMode, false, CfgFlag::PER_GAME | CfgFlag::DEFAULT), ConfigSetting("AchievementsUnofficial", &g_Config.bAchievementsUnofficial, false, CfgFlag::PER_GAME | CfgFlag::DEFAULT), ConfigSetting("AchievementsLogBadMemReads", &g_Config.bAchievementsLogBadMemReads, false, CfgFlag::DEFAULT), diff --git a/Core/Config.h b/Core/Config.h index 399a526698..4596423313 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -522,7 +522,7 @@ public: // Retro Achievement settings // Copied from Duckstation, we might want to remove some. bool bAchievementsEnable; - bool bAchievementsChallengeMode; + bool bAchievementsHardcoreMode; bool bAchievementsEncoreMode; bool bAchievementsUnofficial; bool bAchievementsSoundEffects; diff --git a/Core/RetroAchievements.cpp b/Core/RetroAchievements.cpp index 650cf268fb..ed0e78d6af 100644 --- a/Core/RetroAchievements.cpp +++ b/Core/RetroAchievements.cpp @@ -509,7 +509,7 @@ static void raintegration_event_handler(const rc_client_raintegration_event_t *e // Hardcore mode has been changed (either directly by the user, or disabled through the use of the tools). // The frontend doesn't necessarily need to know that this value changed, they can still query it whenever // it's appropriate, but the event lets the frontend do things like enable/disable rewind or cheats. - // handle_hardcore_changed(); + g_Config.bAchievementsHardcoreMode = rc_client_get_hardcore_enabled(client); break; default: ERROR_LOG(ACHIEVEMENTS, "Unsupported raintegration event %u\n", event->type); @@ -578,6 +578,11 @@ void Initialize() { rc_client_set_event_handler(g_rcClient, event_handler_callback); + // Set initial settings properly. Hardcore mode is checked by RAIntegration. + rc_client_set_hardcore_enabled(g_rcClient, g_Config.bAchievementsHardcoreMode ? 1 : 0); + rc_client_set_encore_mode_enabled(g_rcClient, g_Config.bAchievementsEncoreMode ? 1 : 0); + rc_client_set_unofficial_enabled(g_rcClient, g_Config.bAchievementsUnofficial ? 1 : 0); + #ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION if (g_Config.bAchievementsEnableRAIntegration) { wchar_t szFilePath[MAX_PATH]; @@ -963,7 +968,7 @@ void SetGame(const Path &path, IdentifiedFileType fileType, FileLoader *fileLoad } // Apply pre-load settings. - rc_client_set_hardcore_enabled(g_rcClient, g_Config.bAchievementsChallengeMode ? 1 : 0); + rc_client_set_hardcore_enabled(g_rcClient, g_Config.bAchievementsHardcoreMode ? 1 : 0); rc_client_set_encore_mode_enabled(g_rcClient, g_Config.bAchievementsEncoreMode ? 1 : 0); rc_client_set_unofficial_enabled(g_rcClient, g_Config.bAchievementsUnofficial ? 1 : 0); diff --git a/UI/RetroAchievementScreens.cpp b/UI/RetroAchievementScreens.cpp index f7efd65fac..2f4cabdc14 100644 --- a/UI/RetroAchievementScreens.cpp +++ b/UI/RetroAchievementScreens.cpp @@ -337,7 +337,7 @@ void RetroAchievementsSettingsScreen::CreateAccountTab(UI::ViewGroup *viewGroup) RecreateViews(); return UI::EVENT_DONE; }); - viewGroup->Add(new CheckBox(&g_Config.bAchievementsChallengeMode, ac->T("Hardcore Mode (no savestates)")))->SetEnabledPtr(&g_Config.bAchievementsEnable); + viewGroup->Add(new CheckBox(&g_Config.bAchievementsHardcoreMode, ac->T("Hardcore Mode (no savestates)")))->SetEnabledPtr(&g_Config.bAchievementsEnable); viewGroup->Add(new CheckBox(&g_Config.bAchievementsSoundEffects, ac->T("Sound Effects")))->SetEnabledPtr(&g_Config.bAchievementsEnable); // not yet implemented viewGroup->Add(new ItemHeader(di->T("Links"))); diff --git a/Windows/Debugger/Debugger_Disasm.cpp b/Windows/Debugger/Debugger_Disasm.cpp index 05b36f12aa..d72e0a90b3 100644 --- a/Windows/Debugger/Debugger_Disasm.cpp +++ b/Windows/Debugger/Debugger_Disasm.cpp @@ -676,9 +676,10 @@ BOOL CDisasm::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) Show(false); return TRUE; case WM_ACTIVATE: - if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) - { + if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { g_activeWindow = WINDOW_CPUDEBUGGER; + } else { + g_activeWindow = WINDOW_OTHER; } break; diff --git a/Windows/GEDebugger/GEDebugger.cpp b/Windows/GEDebugger/GEDebugger.cpp index e33e882e6f..12ab35ea97 100644 --- a/Windows/GEDebugger/GEDebugger.cpp +++ b/Windows/GEDebugger/GEDebugger.cpp @@ -1073,6 +1073,8 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) { case WM_ACTIVATE: if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { g_activeWindow = WINDOW_GEDEBUGGER; + } else { + g_activeWindow = WINDOW_OTHER; } break; diff --git a/Windows/MainWindow.cpp b/Windows/MainWindow.cpp index 2cdafcaccf..0bfb82a7bf 100644 --- a/Windows/MainWindow.cpp +++ b/Windows/MainWindow.cpp @@ -599,12 +599,6 @@ namespace MainWindow static bool firstErase = true; switch (message) { - case WM_ACTIVATE: - if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { - g_activeWindow = WINDOW_MAINWINDOW; - } - break; - case WM_SIZE: break; @@ -829,6 +823,8 @@ namespace MainWindow } g_activeWindow = WINDOW_MAINWINDOW; pause = false; + } else { + g_activeWindow = WINDOW_OTHER; } if (!noFocusPause && g_Config.bPauseOnLostFocus && GetUIState() == UISTATE_INGAME) { if (pause != Core_IsStepping()) { // != is xor for bools diff --git a/Windows/main.h b/Windows/main.h index 44cdbd621a..610197d208 100644 --- a/Windows/main.h +++ b/Windows/main.h @@ -37,4 +37,4 @@ extern CGEDebugger* geDebuggerWindow; extern int g_activeWindow; -enum { WINDOW_MAINWINDOW, WINDOW_CPUDEBUGGER, WINDOW_GEDEBUGGER }; +enum { WINDOW_MAINWINDOW, WINDOW_CPUDEBUGGER, WINDOW_GEDEBUGGER, WINDOW_OTHER };