73 lines
2.0 KiB
C++
73 lines
2.0 KiB
C++
#include "misc/DiscordRPC.h"
|
|
#include "misc/Time.h"
|
|
|
|
#include <cstring>
|
|
|
|
#include <discordrpc/discord_rpc.h>
|
|
|
|
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<std::int64_t>(GetTime());
|
|
|
|
if (resetTimer) currentTimeStamp = static_cast<std::int64_t>(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
|