implemet buttons

This commit is contained in:
Panda Soli 2023-09-27 15:31:33 -03:00
parent 963aa9f3e5
commit 6a7e48e9c3
4 changed files with 34 additions and 9 deletions

View File

@ -34,6 +34,9 @@ static int prompt(char* line, size_t size)
static void updateDiscordPresence()
{
if (SendPresence) {
DiscordPresenceButton btn2 = {"DuckDuckGo", "https://duckduckgo.com", NULL};
DiscordPresenceButton btn1 = {"Google", "https://google.com", &btn2};
char buffer[256];
DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
@ -48,10 +51,11 @@ static void updateDiscordPresence()
discordPresence.partySize = 1;
discordPresence.partyMax = 6;
discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
discordPresence.matchSecret = "xyzzy";
discordPresence.joinSecret = "join";
discordPresence.spectateSecret = "look";
// discordPresence.matchSecret = "xyzzy";
// discordPresence.joinSecret = "join";
// discordPresence.spectateSecret = "look";
discordPresence.instance = 0;
discordPresence.buttons = &btn1;
Discord_UpdatePresence(&discordPresence);
}
else {

View File

@ -23,6 +23,12 @@
extern "C" {
#endif
typedef struct DiscordPresenceButton {
const char* label;
const char* url;
const struct DiscordPresenceButton* next;
} DiscordPresenceButton;
typedef struct DiscordRichPresence {
const char* state; /* max 128 bytes */
const char* details; /* max 128 bytes */
@ -40,6 +46,7 @@ typedef struct DiscordRichPresence {
const char* joinSecret; /* max 128 bytes */
const char* spectateSecret; /* max 128 bytes */
int8_t instance;
const DiscordPresenceButton* buttons;
} DiscordRichPresence;
typedef struct DiscordUser {

View File

@ -160,6 +160,20 @@ size_t JsonWriteRichPresenceObj(char* dest,
writer.Key("instance");
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);
}
}
}
}