Skip to content

Commit

Permalink
show rcheevos game image in discord rich presence
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamiras committed Aug 24, 2024
1 parent 6cf338d commit 332ea2c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
9 changes: 9 additions & 0 deletions cheevos/cheevos.c
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,15 @@ int rcheevos_get_richpresence(char* s, size_t len)
return (int)rc_client_get_rich_presence_message(rcheevos_locals.client, s, (size_t)len);
}

int rcheevos_get_game_badge_url(char* s, size_t len)
{
const rc_client_game_t* game = rc_client_get_game_info(rcheevos_locals.client);
if (!game || !game->id || !game->badge_name || !game->badge_name[0])
return 0;

return (rc_client_game_get_image_url(game, s, len) == RC_OK);
}

#else /* !HAVE_RC_CLIENT */

void rcheevos_award_achievement(rcheevos_locals_t* locals,
Expand Down
1 change: 1 addition & 0 deletions cheevos/cheevos.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ bool rcheevos_get_support_cheevos(void);

const char* rcheevos_get_hash(void);
int rcheevos_get_richpresence(char *s, size_t len);
int rcheevos_get_game_badge_url(char *s, size_t len);
uintptr_t rcheevos_get_badge_texture(const char* badge, bool locked, bool download_if_missing);

uint8_t* rcheevos_patch_address(unsigned address);
Expand Down
9 changes: 8 additions & 1 deletion network/discord.c
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ void discord_update(enum presence presence)
discord_state_t *discord_st = &discord_state_st;
#ifdef HAVE_CHEEVOS
char cheevos_richpresence[256];
char cheevos_badge_url[256];
#endif

if (presence == discord_st->status)
Expand Down Expand Up @@ -361,11 +362,14 @@ void discord_update(enum presence presence)
discord_st->presence.startTimestamp = discord_st->start_time;

#ifdef HAVE_CHEEVOS
if (rcheevos_get_game_badge_url(cheevos_badge_url, sizeof(cheevos_badge_url)))
discord_st->presence.largeImageKey = cheevos_badge_url;

if (rcheevos_get_richpresence(cheevos_richpresence, sizeof(cheevos_richpresence)) > 0)
discord_st->presence.details = cheevos_richpresence;
else
#endif
discord_st->presence.details = msg_hash_to_str(
discord_st->presence.details = msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME);

discord_st->presence.state = label;
Expand Down Expand Up @@ -427,6 +431,9 @@ void discord_update(enum presence presence)
if (discord_st->pause_time)
return;

if (rcheevos_get_game_badge_url(cheevos_badge_url, sizeof(cheevos_badge_url)))
discord_st->presence.largeImageKey = cheevos_badge_url;

if (rcheevos_get_richpresence(cheevos_richpresence, sizeof(cheevos_richpresence)) > 0)
discord_st->presence.details = cheevos_richpresence;
presence = PRESENCE_GAME;
Expand Down

0 comments on commit 332ea2c

Please sign in to comment.