diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-08-03 18:51:19 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-08-03 18:51:19 +1000 |
commit | 20de634a06c0053aad4b1a0017cae4ed023b6e94 (patch) | |
tree | ac4903dde869091aacf03a151811f8a4c0d84f5a /source/application | |
parent | bef86811c9a08711b45523193b2ac7c13850f8c6 (diff) |
Improve Discord activity info
requested by Omeruin!
Diffstat (limited to 'source/application')
-rw-r--r-- | source/application/StarP2PNetworkingService_pc.cpp | 24 | ||||
-rw-r--r-- | source/application/StarP2PNetworkingService_pc.hpp | 4 |
2 files changed, 20 insertions, 8 deletions
diff --git a/source/application/StarP2PNetworkingService_pc.cpp b/source/application/StarP2PNetworkingService_pc.cpp index 2d20415..0e13dee 100644 --- a/source/application/StarP2PNetworkingService_pc.cpp +++ b/source/application/StarP2PNetworkingService_pc.cpp @@ -81,7 +81,11 @@ void PcP2PNetworkingService::setJoinRemote(HostAddressWithPort location) { setJoinLocation(JoinRemote(location)); } -void Star::PcP2PNetworkingService::setActivityData([[maybe_unused]] String const& title, [[maybe_unused]] Maybe<pair<uint16_t, uint16_t>> party) { +void Star::PcP2PNetworkingService::setActivityData( + [[maybe_unused]] const char* title, + [[maybe_unused]] const char* details, + [[maybe_unused]] int64_t startTime, + [[maybe_unused]] Maybe<pair<uint16_t, uint16_t>> party) { #ifdef STAR_ENABLE_DISCORD_INTEGRATION MutexLocker discordLocker(m_state->discordMutex); #endif @@ -92,19 +96,25 @@ void Star::PcP2PNetworkingService::setActivityData([[maybe_unused]] String const if (m_discordUpdatingActivity) return; - if (title != m_discordActivityTitle || party != m_discordPartySize || m_discordForceUpdateActivity) { + if (title != m_discordActivityTitle + || details != m_discordActivityDetails + || startTime != m_discordActivityStartTime || party != m_discordPartySize || m_discordForceUpdateActivity) { m_discordForceUpdateActivity = false; m_discordPartySize = party; m_discordActivityTitle = title; + m_discordActivityDetails = details; + m_discordActivityStartTime = startTime; discord::Activity activity = {}; activity.SetType(discord::ActivityType::Playing); activity.SetName("Starbound"); - activity.SetState(title.utf8Ptr()); - - if (auto p = party) { - activity.GetParty().GetSize().SetCurrentSize(p->first); - activity.GetParty().GetSize().SetMaxSize(p->second); + activity.SetState(title); + activity.SetDetails(details); + activity.GetTimestamps().SetStart(startTime); + if (party) { + auto& size = activity.GetParty().GetSize(); + size.SetCurrentSize(party->first); + size.SetMaxSize(party->second); } if (auto lobby = m_discordServerLobby) diff --git a/source/application/StarP2PNetworkingService_pc.hpp b/source/application/StarP2PNetworkingService_pc.hpp index 20fbefb..293b6bf 100644 --- a/source/application/StarP2PNetworkingService_pc.hpp +++ b/source/application/StarP2PNetworkingService_pc.hpp @@ -18,7 +18,7 @@ public: void setJoinUnavailable() override; void setJoinLocal(uint32_t capacity) override; void setJoinRemote(HostAddressWithPort location) override; - void setActivityData(String const& title, Maybe<pair<uint16_t, uint16_t>>) override; + void setActivityData(const char* title, const char* details, int64_t startTime, Maybe<pair<uint16_t, uint16_t>>) override; MVariant<P2PNetworkingPeerId, HostAddressWithPort> pullPendingJoin() override; Maybe<pair<String, RpcPromiseKeeper<P2PJoinRequestReply>>> pullJoinRequest() override; @@ -125,6 +125,8 @@ private: HashMap<discord::UserId, DiscordP2PSocket*> m_discordOpenSockets; String m_discordActivityTitle; + String m_discordActivityDetails; + int64_t m_discordActivityStartTime = 0; Maybe<pair<uint16_t, uint16_t>> m_discordPartySize; bool m_discordForceUpdateActivity = false; bool m_discordUpdatingActivity = false; |