mirror of
https://github.com/libretro/RetroArch
synced 2025-02-05 06:40:07 +00:00
show rcheevos game image in discord rich presence (#16924)
This commit is contained in:
parent
6cf338d91a
commit
55057d7d5f
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user