diff --git a/Extension/swgameserver.cpp b/Extension/swgameserver.cpp index a18738d..b1e73de 100644 --- a/Extension/swgameserver.cpp +++ b/Extension/swgameserver.cpp @@ -55,6 +55,7 @@ void SteamWorksGameServer::Reset(void) this->m_pNetworking = NULL; this->m_pStats = NULL; this->m_pHTTP = NULL; + this->m_pMatchmaking = NULL; } ISteamClient *SteamWorksGameServer::GetSteamClient(void) @@ -140,6 +141,22 @@ ISteamHTTP *SteamWorksGameServer::GetHTTP(void) return this->m_pHTTP; } +ISteamMatchmaking *SteamWorksGameServer::GetMatchmaking(void) +{ + if (this->m_pMatchmaking == NULL && this->GetSteamClient() != NULL) + { + HSteamUser hSteamUser; + HSteamPipe hSteamPipe; + GetUserAndPipe(hSteamUser, hSteamPipe); + + const char *pVersion = STEAMMATCHMAKING_INTERFACE_VERSION; + GetGameSpecificConfigInterface("SteamMatchmakingVersion", pVersion); + this->m_pMatchmaking = this->GetSteamClient()->GetISteamMatchmaking(hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION); + } + + return this->m_pMatchmaking; +} + void SteamWorksGameServer::GetUserAndPipe(HSteamUser &hSteamUser, HSteamPipe &hSteamPipe) { hSteamUser = SteamGameServer_GetHSteamUser(); diff --git a/Extension/swgameserver.h b/Extension/swgameserver.h index 5530e10..2102733 100644 --- a/Extension/swgameserver.h +++ b/Extension/swgameserver.h @@ -34,6 +34,7 @@ class SteamWorksGameServer ISteamNetworking *GetNetworking(void); ISteamGameServerStats *GetServerStats(void); ISteamHTTP *GetHTTP(void); + ISteamMatchmaking *GetMatchmaking(void); public: void Reset(void); private: @@ -45,6 +46,7 @@ class SteamWorksGameServer ISteamNetworking *m_pNetworking; ISteamGameServerStats *m_pStats; ISteamHTTP *m_pHTTP; + ISteamMatchmaking *m_pMatchmaking; bool loaded; };