mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 15:59:49 +02:00
More work on lobby creation/invites
This commit is contained in:
parent
af76e47629
commit
6b861e680f
1 changed files with 48 additions and 3 deletions
|
@ -142,6 +142,15 @@ public:
|
||||||
STEAM_CALLBACK(SteamCallbackManager, onGameRichPresenceJoinRequested,
|
STEAM_CALLBACK(SteamCallbackManager, onGameRichPresenceJoinRequested,
|
||||||
GameRichPresenceJoinRequested_t, _gameRichPresenceJoinRequestedResponse);
|
GameRichPresenceJoinRequested_t, _gameRichPresenceJoinRequestedResponse);
|
||||||
|
|
||||||
|
STEAM_CALLBACK(SteamCallbackManager, onLobbyCreated,
|
||||||
|
LobbyCreated_t, _lobbyCreatedResponse);
|
||||||
|
|
||||||
|
STEAM_CALLBACK(SteamCallbackManager, onGameLobbyJoinRequested,
|
||||||
|
GameLobbyJoinRequested_t, _gameLobbyJoinRequestedResponse);
|
||||||
|
|
||||||
|
STEAM_CALLBACK(SteamCallbackManager, onLobbyEnter,
|
||||||
|
LobbyEnter_t, _lobbyEnterResponse);
|
||||||
|
|
||||||
SteamTicketRequests& getTicketRequests() { return _steamTicketRequests; }
|
SteamTicketRequests& getTicketRequests() { return _steamTicketRequests; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -149,7 +158,10 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
SteamCallbackManager::SteamCallbackManager() :
|
SteamCallbackManager::SteamCallbackManager() :
|
||||||
_gameRichPresenceJoinRequestedResponse(this, &SteamCallbackManager::onGameRichPresenceJoinRequested)
|
_gameRichPresenceJoinRequestedResponse(this, &SteamCallbackManager::onGameRichPresenceJoinRequested),
|
||||||
|
_lobbyCreatedResponse(this, &SteamCallbackManager::onLobbyCreated),
|
||||||
|
_gameLobbyJoinRequestedResponse(this, &SteamCallbackManager::onGameLobbyJoinRequested),
|
||||||
|
_lobbyEnterResponse(this, &SteamCallbackManager::onLobbyEnter)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,6 +181,38 @@ void SteamCallbackManager::onGameRichPresenceJoinRequested(GameRichPresenceJoinR
|
||||||
QCoreApplication::postEvent(qApp, event);
|
QCoreApplication::postEvent(qApp, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SteamCallbackManager::onLobbyCreated(LobbyCreated_t* pCallback) {
|
||||||
|
qDebug() << pCallback->m_eResult << pCallback->m_ulSteamIDLobby;
|
||||||
|
if (pCallback->m_eResult == k_EResultOK) {
|
||||||
|
qDebug() << "Inviting steam friends";
|
||||||
|
|
||||||
|
SteamMatchmaking()->SetLobbyData(pCallback->m_ulSteamIDLobby, "connect",
|
||||||
|
SteamFriends()->GetFriendRichPresence(SteamUser()->GetSteamID(), "connect"));
|
||||||
|
SteamMatchmaking()->SetLobbyMemberData(pCallback->m_ulSteamIDLobby,
|
||||||
|
"Creator", "true");
|
||||||
|
SteamFriends()->ActivateGameOverlayInviteDialog(pCallback->m_ulSteamIDLobby);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SteamCallbackManager::onGameLobbyJoinRequested(GameLobbyJoinRequested_t* pCallback) {
|
||||||
|
qDebug() << "onGameLobbyJoinRequested";
|
||||||
|
SteamMatchmaking()->JoinLobby(pCallback->m_steamIDLobby);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SteamCallbackManager::onLobbyEnter(LobbyEnter_t* pCallback) {
|
||||||
|
qDebug() << "onLobbyEnter";
|
||||||
|
auto creator = SteamMatchmaking()->GetLobbyMemberData(pCallback->m_ulSteamIDLobby, SteamUser()->GetSteamID(), "creator");
|
||||||
|
if (strcmp(creator, "true") == 0) {
|
||||||
|
qDebug() << "Created lobby";
|
||||||
|
SteamMatchmaking()->LeaveLobby(pCallback->m_ulSteamIDLobby);
|
||||||
|
} else if (pCallback->m_EChatRoomEnterResponse == k_EChatRoomEnterResponseSuccess) {
|
||||||
|
qDebug() << "Success";
|
||||||
|
auto connectValue = SteamMatchmaking()->GetLobbyData(pCallback->m_ulSteamIDLobby, "connect");
|
||||||
|
qDebug() << connectValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static std::atomic_bool initialized { false };
|
static std::atomic_bool initialized { false };
|
||||||
static SteamCallbackManager steamCallbackManager;
|
static SteamCallbackManager steamCallbackManager;
|
||||||
|
|
||||||
|
@ -244,6 +288,7 @@ void SteamClient::openInviteOverlay() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Inviting steam friends";
|
qDebug() << "Creating steam lobby";
|
||||||
SteamFriends()->ActivateGameOverlayInviteDialog(CSteamID());
|
static const int MAX_LOBBY_SIZE = 20;
|
||||||
|
SteamMatchmaking()->CreateLobby(k_ELobbyTypePrivate, MAX_LOBBY_SIZE);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue