diff --git a/include/dusk/settings.h b/include/dusk/settings.h index de78432c98..12fe11d089 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -115,6 +115,7 @@ struct UserSettings { ConfigVar enableLinkDollRotation; ConfigVar enableAchievementToasts; ConfigVar enableControllerToasts; + ConfigVar enableDiscordPresence; // Graphics ConfigVar bloomMode; diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 9a13d0ecc8..4379587b38 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -52,6 +52,7 @@ UserSettings g_userSettings = { .enableLinkDollRotation {"game.enableLinkDollRotation", false}, .enableAchievementToasts {"game.enableAchievementToasts", true}, .enableControllerToasts {"game.enableControllerToasts", true}, + .enableDiscordPresence {"game.enableDiscordPresence", true}, // Graphics .bloomMode {"game.bloomMode", BloomMode::Dusk}, @@ -180,6 +181,7 @@ void registerSettings() { Register(g_userSettings.game.freeCameraSensitivity); Register(g_userSettings.game.minimalHUD); Register(g_userSettings.game.pauseOnFocusLost); + Register(g_userSettings.game.enableDiscordPresence); Register(g_userSettings.game.bloomMode); Register(g_userSettings.game.bloomMultiplier); Register(g_userSettings.game.disableWaterRefraction); diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 305f05f3b2..5bbe75bde0 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -12,6 +12,7 @@ #include "dusk/io.hpp" #include "dusk/livesplit.h" #include "dusk/main.h" +#include "dusk/discord_presence.hpp" #include "graphics_tuner.hpp" #include "m_Do/m_Do_main.h" #include "menu_bar.hpp" @@ -1249,6 +1250,20 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { .helpText = "Checks GitHub releases for a new Dusklight version on startup.

" "No personal information is transmitted or collected.", }); +#ifdef DUSK_DISCORD + config_bool_select(leftPane, rightPane, getSettings().game.enableDiscordPresence, + { + .key = "Enable Discord Rich Presence", + .helpText = "Enable Dusk to integrate with Discord Rich Presence. This allows Discord to show your status in-game.", + .onChange = [](bool enabled) { + if (enabled) { + dusk::discord::initialize(); + } else { + dusk::discord::shutdown(); + } + }, + }); +#endif config_bool_select(leftPane, rightPane, getSettings().backend.enableAdvancedSettings, { .key = "Enable Advanced Settings", diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 8f0a02ad1d..da5ba8f55f 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -549,7 +549,9 @@ int game_main(int argc, char* argv[]) { } #ifdef DUSK_DISCORD - dusk::discord::initialize(); + if (dusk::getSettings().game.enableDiscordPresence) { + dusk::discord::initialize(); + } #endif VISetWindowTitle(