base discord rpc
This commit is contained in:
72
src/misc/DiscordRPC.cpp
Normal file
72
src/misc/DiscordRPC.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user