mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-22 13:55:38 +00:00
DiscordRPC: Show session time in Discord Rich Presence
This commit is contained in:
parent
9ec3266f02
commit
d08a40bcd8
|
@ -795,7 +795,7 @@ void Achievements::UpdateRichPresence(std::unique_lock<std::recursive_mutex>& lo
|
|||
|
||||
#ifdef ENABLE_DISCORD_PRESENCE
|
||||
lock.unlock();
|
||||
System::UpdateDiscordPresence();
|
||||
System::UpdateDiscordPresence(false);
|
||||
lock.lock();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -234,6 +234,7 @@ static u64 s_session_start_time = 0;
|
|||
|
||||
#ifdef ENABLE_DISCORD_PRESENCE
|
||||
static bool s_discord_presence_active = false;
|
||||
static time_t s_discord_presence_time_epoch;
|
||||
#endif
|
||||
|
||||
static TinyString GetTimestampStringForFileName()
|
||||
|
@ -1691,7 +1692,7 @@ void System::ClearRunningGame()
|
|||
Achievements::GameChanged(s_running_game_path, nullptr);
|
||||
|
||||
#ifdef ENABLE_DISCORD_PRESENCE
|
||||
UpdateDiscordPresence();
|
||||
UpdateDiscordPresence(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3372,7 +3373,7 @@ void System::UpdateRunningGame(const char* path, CDImage* image, bool booting)
|
|||
SaveStateSelectorUI::ClearList();
|
||||
|
||||
#ifdef ENABLE_DISCORD_PRESENCE
|
||||
UpdateDiscordPresence();
|
||||
UpdateDiscordPresence(booting);
|
||||
#endif
|
||||
|
||||
Host::OnGameChanged(s_running_game_path, s_running_game_serial, s_running_game_title);
|
||||
|
@ -4834,7 +4835,7 @@ void System::InitializeDiscordPresence()
|
|||
Discord_Initialize("705325712680288296", &handlers, 0, nullptr);
|
||||
s_discord_presence_active = true;
|
||||
|
||||
UpdateDiscordPresence();
|
||||
UpdateDiscordPresence(true);
|
||||
}
|
||||
|
||||
void System::ShutdownDiscordPresence()
|
||||
|
@ -4847,16 +4848,19 @@ void System::ShutdownDiscordPresence()
|
|||
s_discord_presence_active = false;
|
||||
}
|
||||
|
||||
void System::UpdateDiscordPresence()
|
||||
void System::UpdateDiscordPresence(bool update_session_time)
|
||||
{
|
||||
if (!s_discord_presence_active)
|
||||
return;
|
||||
|
||||
if (update_session_time)
|
||||
s_discord_presence_time_epoch = std::time(nullptr);
|
||||
|
||||
// https://discord.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields
|
||||
DiscordRichPresence rp = {};
|
||||
rp.largeImageKey = "duckstation_logo";
|
||||
rp.largeImageText = "DuckStation PS1/PSX Emulator";
|
||||
rp.startTimestamp = std::time(nullptr);
|
||||
rp.startTimestamp = s_discord_presence_time_epoch;
|
||||
rp.details = "No Game Running";
|
||||
if (IsValidOrInitializing())
|
||||
{
|
||||
|
|
|
@ -480,7 +480,7 @@ void SetRunaheadReplayFlag();
|
|||
|
||||
#ifdef ENABLE_DISCORD_PRESENCE
|
||||
/// Called when rich presence changes.
|
||||
void UpdateDiscordPresence();
|
||||
void UpdateDiscordPresence(bool update_session_time);
|
||||
#endif
|
||||
|
||||
namespace Internal {
|
||||
|
|
Loading…
Reference in a new issue