From 6cb2fdf3bd4286c1ecca0dcf62517d992c5fb71b Mon Sep 17 00:00:00 2001 From: Jean-Michel Deruty Date: Wed, 31 May 2023 16:45:53 +0200 Subject: [PATCH 1/2] Fix proposal for "steam invitation not processed on launch" --- src/Stormancer.Plugins/Steam/cpp/Steam.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Stormancer.Plugins/Steam/cpp/Steam.hpp b/src/Stormancer.Plugins/Steam/cpp/Steam.hpp index beb40be5..3f900e3e 100644 --- a/src/Stormancer.Plugins/Steam/cpp/Steam.hpp +++ b/src/Stormancer.Plugins/Steam/cpp/Steam.hpp @@ -414,6 +414,28 @@ namespace Stormancer { scheduleRunSteamAPiCallbacks(); } + + auto steamLobbyIdStr = steamConfig->getConnectLobby(); + + if (!steamLobbyIdStr.empty()) + { + if (auto invitationMessenger = _wInvitationMessenger.lock()) + { + SteamIDLobby steamIDLobby = std::stoull(steamLobbyIdStr); + + _logger->log(LogLevel::Trace, "Steam", "Game lobby join requested", std::to_string(steamIDLobby)); + + SteamID senderId = callback->m_steamIDFriend.ConvertToUint64(); + + Party::PartyId partyId; + partyId.platform = platformName; + partyId.type = PARTY_TYPE_STEAMIDLOBBY; + partyId.id = std::to_string(steamIDLobby); + + auto steamPartyInvitation = std::make_shared(std::to_string(senderId), partyId); + invitationMessenger->notifyInvitationReceived(steamPartyInvitation); + } + } } auto usersApi = _wUsersApi.lock(); From 141c16ce6328ffecf71d45c94fbc1e895c1e1f2e Mon Sep 17 00:00:00 2001 From: Antoine Lafarge Date: Wed, 31 May 2023 19:31:08 +0200 Subject: [PATCH 2/2] Fix build steam.hpp --- src/Stormancer.Plugins/Steam/cpp/Steam.hpp | 32 ++++++++++------------ 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Stormancer.Plugins/Steam/cpp/Steam.hpp b/src/Stormancer.Plugins/Steam/cpp/Steam.hpp index 3f900e3e..bbc7fc3d 100644 --- a/src/Stormancer.Plugins/Steam/cpp/Steam.hpp +++ b/src/Stormancer.Plugins/Steam/cpp/Steam.hpp @@ -333,9 +333,9 @@ namespace Stormancer { public: - SteamPartyInvitation(const std::string& senderId, const Party::PartyId& partyId) - : _senderId(senderId) - , _partyId(partyId) + SteamPartyInvitation(const Party::PartyId& partyId, const std::string& senderSteamID = "") + : _partyId(partyId) + , _senderSteamID(senderSteamID) { } @@ -351,7 +351,7 @@ namespace Stormancer std::string getSenderId() override { - return _senderId; + return _senderSteamID; } std::string getSenderPlatformId() override @@ -366,8 +366,8 @@ namespace Stormancer private: - std::string _senderId; Party::PartyId _partyId; + std::string _senderSteamID; }; class SteamPartyProvider; @@ -415,24 +415,22 @@ namespace Stormancer scheduleRunSteamAPiCallbacks(); } - auto steamLobbyIdStr = steamConfig->getConnectLobby(); + auto connectLobbyArgument = steamConfig->getConnectLobby(); - if (!steamLobbyIdStr.empty()) + if (!connectLobbyArgument.empty()) { if (auto invitationMessenger = _wInvitationMessenger.lock()) { - SteamIDLobby steamIDLobby = std::stoull(steamLobbyIdStr); + _logger->log(LogLevel::Trace, "Steam", "Process launch argument +connect_lobby", connectLobbyArgument); - _logger->log(LogLevel::Trace, "Steam", "Game lobby join requested", std::to_string(steamIDLobby)); - - SteamID senderId = callback->m_steamIDFriend.ConvertToUint64(); + SteamIDLobby steamIDLobby = std::stoull(connectLobbyArgument); Party::PartyId partyId; - partyId.platform = platformName; - partyId.type = PARTY_TYPE_STEAMIDLOBBY; partyId.id = std::to_string(steamIDLobby); + partyId.type = PARTY_TYPE_STEAMIDLOBBY; + partyId.platform = platformName; - auto steamPartyInvitation = std::make_shared(std::to_string(senderId), partyId); + auto steamPartyInvitation = std::make_shared(partyId); invitationMessenger->notifyInvitationReceived(steamPartyInvitation); } } @@ -1333,9 +1331,9 @@ namespace Stormancer SteamID senderId = callback->m_steamIDFriend.ConvertToUint64(); Party::PartyId partyId; - partyId.platform = platformName; - partyId.type = PARTY_TYPE_STEAMIDLOBBY; partyId.id = std::to_string(steamIDLobby); + partyId.type = PARTY_TYPE_STEAMIDLOBBY; + partyId.platform = platformName; auto invitationMessenger = _wInvitationMessenger.lock(); if (!invitationMessenger) @@ -1344,7 +1342,7 @@ namespace Stormancer return; } - auto steamPartyInvitation = std::make_shared(std::to_string(senderId), partyId); + auto steamPartyInvitation = std::make_shared(partyId, std::to_string(senderId)); invitationMessenger->notifyInvitationReceived(steamPartyInvitation); }