implemet buttons
This commit is contained in:
parent
963aa9f3e5
commit
6a7e48e9c3
@ -34,6 +34,9 @@ static int prompt(char* line, size_t size)
|
|||||||
static void updateDiscordPresence()
|
static void updateDiscordPresence()
|
||||||
{
|
{
|
||||||
if (SendPresence) {
|
if (SendPresence) {
|
||||||
|
DiscordPresenceButton btn2 = {"DuckDuckGo", "https://duckduckgo.com", NULL};
|
||||||
|
DiscordPresenceButton btn1 = {"Google", "https://google.com", &btn2};
|
||||||
|
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
DiscordRichPresence discordPresence;
|
DiscordRichPresence discordPresence;
|
||||||
memset(&discordPresence, 0, sizeof(discordPresence));
|
memset(&discordPresence, 0, sizeof(discordPresence));
|
||||||
@ -48,10 +51,11 @@ static void updateDiscordPresence()
|
|||||||
discordPresence.partySize = 1;
|
discordPresence.partySize = 1;
|
||||||
discordPresence.partyMax = 6;
|
discordPresence.partyMax = 6;
|
||||||
discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
|
discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
|
||||||
discordPresence.matchSecret = "xyzzy";
|
// discordPresence.matchSecret = "xyzzy";
|
||||||
discordPresence.joinSecret = "join";
|
// discordPresence.joinSecret = "join";
|
||||||
discordPresence.spectateSecret = "look";
|
// discordPresence.spectateSecret = "look";
|
||||||
discordPresence.instance = 0;
|
discordPresence.instance = 0;
|
||||||
|
discordPresence.buttons = &btn1;
|
||||||
Discord_UpdatePresence(&discordPresence);
|
Discord_UpdatePresence(&discordPresence);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef struct DiscordPresenceButton {
|
||||||
|
const char* label;
|
||||||
|
const char* url;
|
||||||
|
const struct DiscordPresenceButton* next;
|
||||||
|
} DiscordPresenceButton;
|
||||||
|
|
||||||
typedef struct DiscordRichPresence {
|
typedef struct DiscordRichPresence {
|
||||||
const char* state; /* max 128 bytes */
|
const char* state; /* max 128 bytes */
|
||||||
const char* details; /* max 128 bytes */
|
const char* details; /* max 128 bytes */
|
||||||
@ -40,6 +46,7 @@ typedef struct DiscordRichPresence {
|
|||||||
const char* joinSecret; /* max 128 bytes */
|
const char* joinSecret; /* max 128 bytes */
|
||||||
const char* spectateSecret; /* max 128 bytes */
|
const char* spectateSecret; /* max 128 bytes */
|
||||||
int8_t instance;
|
int8_t instance;
|
||||||
|
const DiscordPresenceButton* buttons;
|
||||||
} DiscordRichPresence;
|
} DiscordRichPresence;
|
||||||
|
|
||||||
typedef struct DiscordUser {
|
typedef struct DiscordUser {
|
||||||
|
@ -42,12 +42,12 @@ extern "C" DISCORD_EXPORT void Discord_Register(const char* applicationId, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char* desktopFileFormat = "[Desktop Entry]\n"
|
const char* desktopFileFormat = "[Desktop Entry]\n"
|
||||||
"Name=Game %s\n"
|
"Name=Game %s\n"
|
||||||
"Exec=%s %%u\n" // note: it really wants that %u in there
|
"Exec=%s %%u\n" // note: it really wants that %u in there
|
||||||
"Type=Application\n"
|
"Type=Application\n"
|
||||||
"NoDisplay=true\n"
|
"NoDisplay=true\n"
|
||||||
"Categories=Discord;Games;\n"
|
"Categories=Discord;Games;\n"
|
||||||
"MimeType=x-scheme-handler/discord-%s;\n";
|
"MimeType=x-scheme-handler/discord-%s;\n";
|
||||||
char desktopFile[2048];
|
char desktopFile[2048];
|
||||||
int fileLen = snprintf(
|
int fileLen = snprintf(
|
||||||
desktopFile, sizeof(desktopFile), desktopFileFormat, applicationId, command, applicationId);
|
desktopFile, sizeof(desktopFile), desktopFileFormat, applicationId, command, applicationId);
|
||||||
|
@ -160,6 +160,20 @@ size_t JsonWriteRichPresenceObj(char* dest,
|
|||||||
|
|
||||||
writer.Key("instance");
|
writer.Key("instance");
|
||||||
writer.Bool(presence->instance != 0);
|
writer.Bool(presence->instance != 0);
|
||||||
|
|
||||||
|
if (presence->buttons) {
|
||||||
|
WriteArray buttons(writer, "buttons");
|
||||||
|
|
||||||
|
const DiscordPresenceButton* current = presence->buttons;
|
||||||
|
do {
|
||||||
|
if (current->label && current->url) {
|
||||||
|
WriteObject button(writer);
|
||||||
|
|
||||||
|
WriteOptionalString(writer, "label", current->label);
|
||||||
|
WriteOptionalString(writer, "url", current->url);
|
||||||
|
}
|
||||||
|
} while ((current = current->next) != NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user