From 954072ff0200e45b2bc38cadcadc2f10e589dbcd Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sat, 2 Jul 2022 10:20:11 +0200 Subject: [PATCH] Add test server --- .../steam/interfaces/matchmaking_servers.cpp | 56 ++++++++++++----- .../steam/interfaces/matchmaking_servers.hpp | 60 ++++++++++++++++--- src/client/steam/interfaces/utils.cpp | 2 +- 3 files changed, 95 insertions(+), 23 deletions(-) diff --git a/src/client/steam/interfaces/matchmaking_servers.cpp b/src/client/steam/interfaces/matchmaking_servers.cpp index d327238a..e00109f1 100644 --- a/src/client/steam/interfaces/matchmaking_servers.cpp +++ b/src/client/steam/interfaces/matchmaking_servers.cpp @@ -4,47 +4,73 @@ namespace steam { void* matchmaking_servers::RequestInternetServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse) + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + pRequestServersResponse->ServerResponded(reinterpret_cast(1), 0); + pRequestServersResponse->RefreshComplete(reinterpret_cast(1), eServerResponded); + return reinterpret_cast(1); } - void* matchmaking_servers::RequestLANServerList(unsigned int iApp, void* pRequestServersResponse) + void* matchmaking_servers::RequestLANServerList(unsigned int iApp, + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + return reinterpret_cast(2); } void* matchmaking_servers::RequestFriendsServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse) + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + return reinterpret_cast(3); } void* matchmaking_servers::RequestFavoritesServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse) + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + return reinterpret_cast(4); } void* matchmaking_servers::RequestHistoryServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse) + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + return reinterpret_cast(5); } void* matchmaking_servers::RequestSpectatorServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse) + matchmaking_server_list_response* pRequestServersResponse) { - return nullptr; + return reinterpret_cast(6); } void matchmaking_servers::ReleaseRequest(void* hServerListRequest) { } - void* matchmaking_servers::GetServerDetails(void* hRequest, int iServer) + gameserveritem_t* matchmaking_servers::GetServerDetails(void* hRequest, int iServer) { - return nullptr; + static gameserveritem_t server{}; + server.m_NetAdr.m_usConnectionPort = 27017; + server.m_NetAdr.m_usQueryPort = 27017; + server.m_NetAdr.m_unIP = 0x7F000001; + server.m_nPing = 10; + server.m_bHadSuccessfulResponse = true; + server.m_bDoNotRefresh = false; + strcpy_s(server.m_szGameDir, "usermaps"); + strcpy_s(server.m_szMap, "mp_nuketown_x"); + strcpy_s(server.m_szGameDescription, "Example BO^3I^5I^6I ^7Server"); + server.m_nAppID = 311210; + server.m_nPlayers = 0; + server.m_nMaxPlayers = 18; + server.m_nBotPlayers = 0; + server.m_bPassword = false; + server.m_bSecure = true; + server.m_ulTimeLastPlayed = 0; + server.m_nServerVersion = 1000; + strcpy_s(server.m_szServerName, "BO^3I^5I^6I ^7Server"); + strcpy_s(server.m_szGameTags, + R"(\gametype\gun\dedicated\true\ranked\true\hardcore\false\zombies\false\modName\usermaps\playerCount\0)"); + server.m_steamID = steam_id(); + + return &server; } void matchmaking_servers::CancelQuery(void* hRequest) @@ -62,7 +88,7 @@ namespace steam int matchmaking_servers::GetServerCount(void* hRequest) { - return 0; + return (reinterpret_cast(1) == hRequest) ? 1 : 0; } void matchmaking_servers::RefreshServer(void* hRequest, int iServer) diff --git a/src/client/steam/interfaces/matchmaking_servers.hpp b/src/client/steam/interfaces/matchmaking_servers.hpp index 5d6b10d9..abad0466 100644 --- a/src/client/steam/interfaces/matchmaking_servers.hpp +++ b/src/client/steam/interfaces/matchmaking_servers.hpp @@ -2,24 +2,70 @@ namespace steam { + typedef enum EMatchMakingServerResponse + { + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer + } matchmaking_server_response; + + class matchmaking_server_list_response + { + public: + virtual void ServerResponded(void* hRequest, int iServer) = 0; + virtual void ServerFailedToRespond(void* hRequest, int iServer) = 0; + virtual void RefreshComplete(void* hRequest, matchmaking_server_response response) = 0; + }; + + class servernetadr_t + { + public: + uint16_t m_usConnectionPort; + uint16_t m_usQueryPort; + uint32_t m_unIP; + }; + + class gameserveritem_t + { + public: + servernetadr_t m_NetAdr; + int m_nPing; + bool m_bHadSuccessfulResponse; + bool m_bDoNotRefresh; + char m_szGameDir[32]; + char m_szMap[32]; + char m_szGameDescription[64]; + uint32_t m_nAppID; + int m_nPlayers; + int m_nMaxPlayers; + int m_nBotPlayers; + bool m_bPassword; + bool m_bSecure; + uint32_t m_ulTimeLastPlayed; + int m_nServerVersion; + char m_szServerName[64]; + char m_szGameTags[128]; + steam_id m_steamID; + }; + class matchmaking_servers { public: ~matchmaking_servers() = default; virtual void* RequestInternetServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse); - virtual void* RequestLANServerList(unsigned int iApp, void* pRequestServersResponse); + matchmaking_server_list_response* pRequestServersResponse); + virtual void* RequestLANServerList(unsigned int iApp, matchmaking_server_list_response* pRequestServersResponse); virtual void* RequestFriendsServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse); + matchmaking_server_list_response* pRequestServersResponse); virtual void* RequestFavoritesServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse); + matchmaking_server_list_response* pRequestServersResponse); virtual void* RequestHistoryServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse); + matchmaking_server_list_response* pRequestServersResponse); virtual void* RequestSpectatorServerList(unsigned int iApp, void** ppchFilters, unsigned int nFilters, - void* pRequestServersResponse); + matchmaking_server_list_response* pRequestServersResponse); virtual void ReleaseRequest(void* hServerListRequest); - virtual void* GetServerDetails(void* hRequest, int iServer); + virtual gameserveritem_t* GetServerDetails(void* hRequest, int iServer); virtual void CancelQuery(void* hRequest); virtual void RefreshQuery(void* hRequest); virtual bool IsRefreshing(void* hRequest); diff --git a/src/client/steam/interfaces/utils.cpp b/src/client/steam/interfaces/utils.cpp index 69f3f823..5dea45fd 100644 --- a/src/client/steam/interfaces/utils.cpp +++ b/src/client/steam/interfaces/utils.cpp @@ -50,7 +50,7 @@ namespace steam unsigned int utils::GetAppID() { - return 209660; + return 311210; } void utils::SetOverlayNotificationPosition(int eNotificationPosition)