Merge branch 'drpc-offloaded-img' into 'master'

Use kartkrew.org for Discord assets

See merge request KartKrew/Kart!2411
This commit is contained in:
Sal 2024-08-28 20:35:42 +00:00
commit 323b225cd3

View file

@ -38,6 +38,11 @@
// Feel free to provide your own, if you care enough to create another Discord app for this :P // Feel free to provide your own, if you care enough to create another Discord app for this :P
#define DISCORD_APPID "977470696852684833" #define DISCORD_APPID "977470696852684833"
// An undocumented feature of Discord RPC is the ability to host images on your own URL.
// We use this to avoid the asset count restrictions on Discord apps.
#define IMAGE_REPO "https://www.kartkrew.org/theme/images/drpc-rr/"
#define IMAGE_EXT ".png"
#ifdef DEVELOP #ifdef DEVELOP
#define DISCORD_SECRETIVE #define DISCORD_SECRETIVE
#endif #endif
@ -519,7 +524,7 @@ void DRPC_UpdatePresence(void)
#ifdef DISCORD_SECRETIVE #ifdef DISCORD_SECRETIVE
// This way, we can use the invite feature in-dev, but not have snoopers seeing any potential secrets! :P // This way, we can use the invite feature in-dev, but not have snoopers seeing any potential secrets! :P
discordPresence.largeImageKey = "misc_develop"; discordPresence.largeImageKey = IMAGE_REPO "misc_develop" IMAGE_EXT;
discordPresence.largeImageText = "No peeking!"; discordPresence.largeImageText = "No peeking!";
discordPresence.state = "Development EXE"; discordPresence.state = "Development EXE";
@ -559,10 +564,11 @@ void DRPC_UpdatePresence(void)
char detailstr[128]; char detailstr[128];
char localstr[128]; char localstr[128];
char charimg[32]; char charimg[128];
char charname[128]; char charname[128];
char gtname[128]; char largeimg[128];
char largename[128];
UINT8 gs = DISCORD_GS_UNKNOWN; UINT8 gs = DISCORD_GS_UNKNOWN;
if (DRPC_DisplayGonerSetup()) if (DRPC_DisplayGonerSetup())
@ -778,7 +784,7 @@ void DRPC_UpdatePresence(void)
// Gametype info // Gametype info
discordPresence.details = "Setup"; discordPresence.details = "Setup";
discordPresence.largeImageKey = "gs_goner"; discordPresence.largeImageKey = IMAGE_REPO "gs_goner" IMAGE_EXT;
discordPresence.largeImageText = "NO SIGNAL"; discordPresence.largeImageText = "NO SIGNAL";
} }
else else
@ -866,81 +872,79 @@ void DRPC_UpdatePresence(void)
} }
// Gametype image // Gametype image
// I am REALLY REALLY sad that there isn't enough room in a // Use these when there's no map image available!
// single Rich Presence app to handle enough images for all
// of the maps...
switch (gs) switch (gs)
{ {
case DISCORD_GS_CUSTOM: case DISCORD_GS_CUSTOM:
{ {
discordPresence.largeImageKey = "custom_gs"; discordPresence.largeImageKey = IMAGE_REPO "custom_gs" IMAGE_EXT;
snprintf(gtname, 128, "%s", gametypes[gametype]->name); snprintf(largename, 128, "%s", gametypes[gametype]->name);
discordPresence.largeImageText = gtname; discordPresence.largeImageText = largename;
break; break;
} }
case DISCORD_GS_RACE: case DISCORD_GS_RACE:
{ {
discordPresence.largeImageKey = "gs_race"; discordPresence.largeImageKey = IMAGE_REPO "gs_race" IMAGE_EXT;
discordPresence.largeImageText = "Race"; discordPresence.largeImageText = "Race";
break; break;
} }
case DISCORD_GS_BATTLE: case DISCORD_GS_BATTLE:
{ {
discordPresence.largeImageKey = "gs_battle"; discordPresence.largeImageKey = IMAGE_REPO "gs_battle" IMAGE_EXT;
discordPresence.largeImageText = "Battle"; discordPresence.largeImageText = "Battle";
break; break;
} }
case DISCORD_GS_TUTORIAL: case DISCORD_GS_TUTORIAL:
{ {
discordPresence.largeImageKey = "gs_tutorial"; discordPresence.largeImageKey = IMAGE_REPO "gs_tutorial" IMAGE_EXT;
discordPresence.largeImageText = "Tutorial"; discordPresence.largeImageText = "Tutorial";
break; break;
} }
case DISCORD_GS_TIMEATTACK: case DISCORD_GS_TIMEATTACK:
{ {
discordPresence.largeImageKey = "gs_timeattack"; discordPresence.largeImageKey = IMAGE_REPO "gs_timeattack" IMAGE_EXT;
discordPresence.largeImageText = "Time Attack"; discordPresence.largeImageText = "Time Attack";
break; break;
} }
case DISCORD_GS_GRANDPRIX: case DISCORD_GS_GRANDPRIX:
{ {
discordPresence.largeImageKey = "gs_grandprix"; discordPresence.largeImageKey = IMAGE_REPO "gs_grandprix" IMAGE_EXT;
discordPresence.largeImageText = "Grand Prix"; discordPresence.largeImageText = "Grand Prix";
break; break;
} }
case DISCORD_GS_VOTING: case DISCORD_GS_VOTING:
{ {
discordPresence.largeImageKey = "gs_voting"; discordPresence.largeImageKey = IMAGE_REPO "gs_voting" IMAGE_EXT;
discordPresence.largeImageText = "Voting"; discordPresence.largeImageText = "Voting";
break; break;
} }
case DISCORD_GS_MENU: case DISCORD_GS_MENU:
{ {
discordPresence.largeImageKey = "gs_menu"; discordPresence.largeImageKey = IMAGE_REPO "gs_menu" IMAGE_EXT;
discordPresence.largeImageText = "Menu"; discordPresence.largeImageText = "Menu";
break; break;
} }
case DISCORD_GS_REPLAY: case DISCORD_GS_REPLAY:
{ {
discordPresence.largeImageKey = "gs_replay"; discordPresence.largeImageKey = IMAGE_REPO "gs_replay" IMAGE_EXT;
discordPresence.largeImageText = "Watching Replays"; discordPresence.largeImageText = "Watching Replays";
break; break;
} }
case DISCORD_GS_TITLE: case DISCORD_GS_TITLE:
{ {
discordPresence.largeImageKey = "gs_title"; discordPresence.largeImageKey = IMAGE_REPO "gs_title" IMAGE_EXT;
discordPresence.largeImageText = "Title Screen"; discordPresence.largeImageText = "Title Screen";
break; break;
} }
case DISCORD_GS_CREDITS: case DISCORD_GS_CREDITS:
{ {
discordPresence.largeImageKey = "gs_credits"; discordPresence.largeImageKey = IMAGE_REPO "gs_credits" IMAGE_EXT;
discordPresence.largeImageText = "Credits"; discordPresence.largeImageText = "Credits";
break; break;
} }
default: default:
{ {
discordPresence.largeImageKey = "misc_develop"; discordPresence.largeImageKey = IMAGE_REPO "misc_develop" IMAGE_EXT;
discordPresence.largeImageText = "Invalid DRPC state?"; discordPresence.largeImageText = "Invalid DRPC state?";
break; break;
} }
@ -952,13 +956,13 @@ void DRPC_UpdatePresence(void)
// Character image // Character image
if ((unsigned)players[consoleplayer].skin < g_discord_skins) // Supported skins if ((unsigned)players[consoleplayer].skin < g_discord_skins) // Supported skins
{ {
snprintf(charimg, 32, "char_%s", skins[ players[consoleplayer].skin ].name); snprintf(charimg, 128, "%schar_%s%s", IMAGE_REPO, skins[ players[consoleplayer].skin ].name, IMAGE_EXT);
discordPresence.smallImageKey = charimg; discordPresence.smallImageKey = charimg;
} }
else else
{ {
// Use the custom character icon! // Use the custom character icon!
discordPresence.smallImageKey = "custom_char"; discordPresence.smallImageKey = IMAGE_REPO "custom_char" IMAGE_EXT;
} }
snprintf(charname, 128, "Character: %s", skins[players[consoleplayer].skin].realname); snprintf(charname, 128, "Character: %s", skins[players[consoleplayer].skin].realname);