#include "misc/DiscordRPC.h" #include "misc/Time.h" #include #include namespace td { namespace utils { static const std::string APPLICATION_ID = "1114135294283874334"; static const std::string TD_ICON = "td_icon2"; static void handleDiscordReady(const DiscordUser* connectedUser); static void handleDiscordDisconnected(int errcode, const char* message); static void handleDiscordError(int errcode, const char* message); void InitDiscordRPC() { DiscordEventHandlers handlers {}; handlers.ready = handleDiscordReady; handlers.disconnected = handleDiscordDisconnected; handlers.errored = handleDiscordError; Discord_Initialize(APPLICATION_ID.c_str(), &handlers, true, nullptr); // Set default presence UpdateDiscordPresence("In Main Menu", "", true); } void UpdateDiscordRPC() { Discord_RunCallbacks(); } void ShutdownDiscordRPC() { Discord_Shutdown(); } void UpdateDiscordPresence(const std::string& state, const std::string& details, bool resetTimer) { static std::int64_t currentTimeStamp = static_cast(GetTime()); if (resetTimer) currentTimeStamp = static_cast(GetTime()); DiscordRichPresence discordPresence {}; discordPresence.state = state.c_str(); discordPresence.details = details.c_str(); discordPresence.startTimestamp = currentTimeStamp; discordPresence.largeImageKey = TD_ICON.c_str(); discordPresence.largeImageText = "Tower Defense"; Discord_UpdatePresence(&discordPresence); } static void handleDiscordReady(const DiscordUser* connectedUser) { printf("\nDiscord: connected to user %s#%s - %s\n", connectedUser->username, connectedUser->discriminator, connectedUser->userId); } static void handleDiscordDisconnected(int errcode, const char* message) { printf("\nDiscord: disconnected (%d: %s)\n", errcode, message); } static void handleDiscordError(int errcode, const char* message) { printf("\nDiscord: error (%d: %s)\n", errcode, message); } } // namespace utils } // namespace td