show rcheevos game image in discord rich presence (#16924)

This commit is contained in:
Jamiras 2024-08-24 17:02:20 -06:00 committed by GitHub
parent 6cf338d91a
commit 55057d7d5f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 1 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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)
@ -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;
@ -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;