From 2ede507e9668fdfb745e583b1833fd7d298d46a5 Mon Sep 17 00:00:00 2001 From: otavepto <153766569+otavepto@users.noreply.github.com> Date: Sun, 5 May 2024 04:24:51 +0300 Subject: [PATCH] * refactor `Steam_Client` class implementation, by moving all interfaces getters into a separate .cpp file * use C++ casts instead of C-Style casts, allowing the compiler to throw errors for invalid usages/casts --- dll/steam_client.cpp | 1022 +------------------------ dll/steam_client_interface_getter.cpp | 1022 +++++++++++++++++++++++++ 2 files changed, 1033 insertions(+), 1011 deletions(-) create mode 100644 dll/steam_client_interface_getter.cpp diff --git a/dll/steam_client.cpp b/dll/steam_client.cpp index 68d4345e..8db7e893 100644 --- a/dll/steam_client.cpp +++ b/dll/steam_client.cpp @@ -18,6 +18,7 @@ #include "dll/steam_client.h" #include "dll/settings_parser.h" + static std::mutex kill_background_thread_mutex{}; static std::condition_variable kill_background_thread_cv{}; static bool kill_background_thread{}; @@ -64,6 +65,8 @@ static void background_thread(Steam_Client *client) } } + + Steam_Client::Steam_Client() { PRINT_DEBUG("start ----------"); @@ -377,609 +380,16 @@ void Steam_Client::ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) } } -// retrieves the ISteamUser interface associated with the handle -ISteamUser *Steam_Client::GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamUser009") == 0) { - return (ISteamUser *)(void *)(ISteamUser009 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser010") == 0) { - return (ISteamUser *)(void *)(ISteamUser010 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser011") == 0) { - return (ISteamUser *)(void *)(ISteamUser011 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser012") == 0) { - return (ISteamUser *)(void *)(ISteamUser012 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser013") == 0) { - return (ISteamUser *)(void *)(ISteamUser013 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser014") == 0) { - return (ISteamUser *)(void *)(ISteamUser014 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser015") == 0) { - return (ISteamUser *)(void *)(ISteamUser015 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser016") == 0) { - return (ISteamUser *)(void *)(ISteamUser016 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser017") == 0) { - return (ISteamUser *)(void *)(ISteamUser017 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser018") == 0) { - return (ISteamUser *)(void *)(ISteamUser018 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser019") == 0) { - return (ISteamUser *)(void *)(ISteamUser019 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser020") == 0) { - return (ISteamUser *)(void *)(ISteamUser020 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser021") == 0) { - return (ISteamUser *)(void *)(ISteamUser021 *)steam_user; - } else if (strcmp(pchVersion, "SteamUser022") == 0) { - return (ISteamUser *)(void *)(ISteamUser022 *)steam_user; - } else if (strcmp(pchVersion, STEAMUSER_INTERFACE_VERSION) == 0) { - return (ISteamUser *)(void *)(ISteamUser *)steam_user; - } else { - return (ISteamUser *)(void *)(ISteamUser *)steam_user; - } - - return (ISteamUser *)(void *)(ISteamUser *)steam_user; -} - -// retrieves the ISteamGameServer interface associated with the handle -ISteamGameServer *Steam_Client::GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamGameServer004") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer004 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer005") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer005 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer006") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer008 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer007") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer008 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer008") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer008 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer009") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer009 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer010") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer010 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer011") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer011 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer012") == 0) { - return (ISteamGameServer *)(void *)(ISteamGameServer012 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer013") == 0) { - gameserver_has_ipv6_functions = true; - return (ISteamGameServer *)(void *)(ISteamGameServer013 *)steam_gameserver; - } else if (strcmp(pchVersion, "SteamGameServer014") == 0) { - gameserver_has_ipv6_functions = true; - return (ISteamGameServer *)(void *)(ISteamGameServer014 *)steam_gameserver; - } else if (strcmp(pchVersion, STEAMGAMESERVER_INTERFACE_VERSION) == 0) { - gameserver_has_ipv6_functions = true; - return (ISteamGameServer *)(void *)(ISteamGameServer *)steam_gameserver; - } else { - gameserver_has_ipv6_functions = true; - return (ISteamGameServer *)(void *)(ISteamGameServer *)steam_gameserver; - } - - return (ISteamGameServer *)(void *)(ISteamGameServer *)steam_gameserver; -} - // set the local IP and Port to bind to // this must be set before CreateLocalUser() void Steam_Client::SetLocalIPBinding( uint32 unIP, uint16 usPort ) { - PRINT_DEBUG("old %u %hu", unIP, usPort); + PRINT_DEBUG("old %u %hu // TODO", unIP, usPort); } void Steam_Client::SetLocalIPBinding( const SteamIPAddress_t &unIP, uint16 usPort ) { - PRINT_DEBUG("%i %u %hu", unIP.m_eType, unIP.m_unIPv4, usPort); -} - -// returns the ISteamFriends interface -ISteamFriends *Steam_Client::GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamFriends003") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends003 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends004") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends004 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends005") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends005 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends006") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends006 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends007") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends007 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends008") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends008 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends009") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends009 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends010") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends010 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends011") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends011 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends012") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends012 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends013") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends013 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends014") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends014 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends015") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends015 *)steam_friends; - } else if (strcmp(pchVersion, "SteamFriends016") == 0) { - return (ISteamFriends *)(void *)(ISteamFriends016 *)steam_friends; - } else if (strcmp(pchVersion, STEAMFRIENDS_INTERFACE_VERSION) == 0) { - return (ISteamFriends *)(void *)(ISteamFriends *)steam_friends; - } else { - return (ISteamFriends *)(void *)(ISteamFriends *)steam_friends; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamFriends *)(void *)(ISteamFriends *)steam_friends; -} - -// returns the ISteamUtils interface -ISteamUtils *Steam_Client::GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe)) return NULL; - - Steam_Utils *steam_utils_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_utils_temp = steam_gameserver_utils; - } else { - steam_utils_temp = steam_utils; - } - - if (strcmp(pchVersion, "SteamUtils002") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils002 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils003") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils003 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils004") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils004 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils005") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils005 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils006") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils006 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils007") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils007 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils008") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils008 *)steam_utils_temp; - } else if (strcmp(pchVersion, "SteamUtils009") == 0) { - return (ISteamUtils *)(void *)(ISteamUtils009 *)steam_utils_temp; - } else if (strcmp(pchVersion, STEAMUTILS_INTERFACE_VERSION) == 0) { - return (ISteamUtils *)(void *)(ISteamUtils *)steam_utils_temp; - } else { - return (ISteamUtils *)(void *)(ISteamUtils *)steam_utils_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamUtils *)(void *)(ISteamUtils *)steam_utils_temp; -} - -// returns the ISteamMatchmaking interface -ISteamMatchmaking *Steam_Client::GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamMatchMaking001") == 0) { - //TODO - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking002 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking002") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking002 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking003") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking003 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking004") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking004 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking005") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking005 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking006") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking006 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking007") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking007 *)steam_matchmaking; - } else if (strcmp(pchVersion, "SteamMatchMaking008") == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking008 *)steam_matchmaking; - } else if (strcmp(pchVersion, STEAMMATCHMAKING_INTERFACE_VERSION) == 0) { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking *)steam_matchmaking; - } else { - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking *)steam_matchmaking; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamMatchmaking *)(void *)(ISteamMatchmaking *)steam_matchmaking; -} - -// returns the ISteamMatchmakingServers interface -ISteamMatchmakingServers *Steam_Client::GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamMatchMakingServers001") == 0) { - return (ISteamMatchmakingServers *)(void *)(ISteamMatchmakingServers001 *)steam_matchmaking_servers; - } else if (strcmp(pchVersion, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION) == 0) { - return (ISteamMatchmakingServers *)(void *)(ISteamMatchmakingServers *)steam_matchmaking_servers; - } else { - return (ISteamMatchmakingServers *)(void *)(ISteamMatchmakingServers *)steam_matchmaking_servers; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamMatchmakingServers *)(void *)(ISteamMatchmakingServers *)steam_matchmaking_servers; -} - -// returns the a generic interface -void *Steam_Client::GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe)) return NULL; - - bool server = false; - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - server = true; - } else { - if ((strstr(pchVersion, "SteamNetworkingUtils") != pchVersion) && (strstr(pchVersion, "SteamUtils") != pchVersion)) { - if (!hSteamUser) return NULL; - } - } - - // NOTE: you must try to read the one with the most characters first - - if (strstr(pchVersion, "SteamNetworkingSocketsSerialized") == pchVersion) { - Steam_Networking_Sockets_Serialized *steam_networking_sockets_serialized_temp; - if (server) { - steam_networking_sockets_serialized_temp = steam_gameserver_networking_sockets_serialized; - } else { - steam_networking_sockets_serialized_temp = steam_networking_sockets_serialized; - } - - if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized002") == 0) { - return (void *)(ISteamNetworkingSocketsSerialized002 *)steam_networking_sockets_serialized_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized003") == 0) { - return (void *)(ISteamNetworkingSocketsSerialized003 *)steam_networking_sockets_serialized_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized004") == 0) { - return (void *)(ISteamNetworkingSocketsSerialized004 *)steam_networking_sockets_serialized_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized005") == 0) { - return (void *)(ISteamNetworkingSocketsSerialized005 *)steam_networking_sockets_serialized_temp; - } else { - return (void *)(ISteamNetworkingSocketsSerialized005 *)steam_networking_sockets_serialized_temp; - } - } else if (strstr(pchVersion, "SteamNetworkingSockets") == pchVersion) { - Steam_Networking_Sockets *steam_networking_sockets_temp; - if (server) { - steam_networking_sockets_temp = steam_gameserver_networking_sockets; - } else { - steam_networking_sockets_temp = steam_networking_sockets; - } - - if (strcmp(pchVersion, "SteamNetworkingSockets001") == 0) { - return (void *)(ISteamNetworkingSockets001 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets002") == 0) { - return (void *)(ISteamNetworkingSockets002 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets003") == 0) { - return (void *)(ISteamNetworkingSockets003 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets004") == 0) { - return (void *)(ISteamNetworkingSockets004 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets006") == 0) { - return (void *)(ISteamNetworkingSockets006 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets008") == 0) { - return (void *)(ISteamNetworkingSockets008 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, "SteamNetworkingSockets009") == 0) { - return (void *)(ISteamNetworkingSockets009 *) steam_networking_sockets_temp; - } else if (strcmp(pchVersion, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION) == 0) { - return (void *)(ISteamNetworkingSockets *) steam_networking_sockets_temp; - } else { - return (void *)(ISteamNetworkingSockets *) steam_networking_sockets_temp; - } - } else if (strstr(pchVersion, "SteamNetworkingMessages") == pchVersion) { - Steam_Networking_Messages *steam_networking_messages_temp; - if (server) { - steam_networking_messages_temp = steam_gameserver_networking_messages; - } else { - steam_networking_messages_temp = steam_networking_messages; - } - - if (strcmp(pchVersion, STEAMNETWORKINGMESSAGES_INTERFACE_VERSION) == 0) { - return (void *)(ISteamNetworkingMessages *)steam_networking_messages_temp; - } else { - return (void *)(ISteamNetworkingMessages *)steam_networking_messages_temp; - } - } else if (strstr(pchVersion, "SteamNetworkingUtils") == pchVersion) { - if (strcmp(pchVersion, "SteamNetworkingUtils001") == 0) { - return (void *)(ISteamNetworkingUtils001 *)steam_networking_utils; - } else if (strcmp(pchVersion, "SteamNetworkingUtils002") == 0) { - return (void *)(ISteamNetworkingUtils002 *)steam_networking_utils; - } else if (strcmp(pchVersion, "SteamNetworkingUtils003") == 0) { - return (void *)(ISteamNetworkingUtils003 *)steam_networking_utils; - } else if (strcmp(pchVersion, STEAMNETWORKINGUTILS_INTERFACE_VERSION) == 0) { - return (void *)(ISteamNetworkingUtils *)steam_networking_utils; - } else { - return (void *)(ISteamNetworkingUtils *)steam_networking_utils; - } - } else if (strstr(pchVersion, "SteamNetworking") == pchVersion) { - return GetISteamNetworking(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamGameCoordinator") == pchVersion) { - Steam_Game_Coordinator *steam_game_coordinator_temp; - if (server) { - steam_game_coordinator_temp = steam_gameserver_game_coordinator; - } else { - steam_game_coordinator_temp = steam_game_coordinator; - } - - if (strcmp(pchVersion, STEAMGAMECOORDINATOR_INTERFACE_VERSION) == 0) { - return (void *)(ISteamGameCoordinator *)steam_game_coordinator_temp; - } else { - return (void *)(ISteamGameCoordinator *)steam_game_coordinator_temp; - } - } else if (strstr(pchVersion, "STEAMTV_INTERFACE_V") == pchVersion) { - if (strcmp(pchVersion, STEAMTV_INTERFACE_VERSION) == 0) { - return (void *)(ISteamTV *)steam_tv; - } else { - return (void *)(ISteamTV *)steam_tv; - } - } else if (strstr(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION") == pchVersion) { - return GetISteamRemoteStorage(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamGameServerStats") == pchVersion) { - return GetISteamGameServerStats(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamGameServer") == pchVersion) { - return GetISteamGameServer(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamMatchMakingServers") == pchVersion) { - return GetISteamMatchmakingServers(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamMatchMaking") == pchVersion) { - return GetISteamMatchmaking(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamFriends") == pchVersion) { - return GetISteamFriends(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamController") == pchVersion || strstr(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION") == pchVersion) { - return GetISteamController(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMUGC_INTERFACE_VERSION") == pchVersion) { - return GetISteamUGC(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMINVENTORY_INTERFACE") == pchVersion) { - return GetISteamInventory(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION") == pchVersion) { - return GetISteamUserStats(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamUser") == pchVersion) { - return GetISteamUser(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamUtils") == pchVersion) { - return GetISteamUtils(hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMAPPS_INTERFACE_VERSION") == pchVersion) { - return GetISteamApps(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMSCREENSHOTS_INTERFACE_VERSION") == pchVersion) { - return GetISteamScreenshots(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMHTTP_INTERFACE_VERSION") == pchVersion) { - return GetISteamHTTP(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION") == pchVersion) { - return DEPRECATED_GetISteamUnifiedMessages(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMAPPLIST_INTERFACE_VERSION") == pchVersion) { - return GetISteamAppList(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMMUSIC_INTERFACE_VERSION") == pchVersion) { - return GetISteamMusic(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMMUSICREMOTE_INTERFACE_VERSION") == pchVersion) { - return GetISteamMusicRemote(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION") == pchVersion) { - return GetISteamHTMLSurface(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMVIDEO_INTERFACE") == pchVersion) { - return GetISteamVideo(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamMasterServerUpdater") == pchVersion) { - return GetISteamMasterServerUpdater(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamMatchGameSearch") == pchVersion) { - return GetISteamGameSearch(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamParties") == pchVersion) { - return GetISteamParties(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "SteamInput") == pchVersion) { - return GetISteamInput(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION") == pchVersion) { - return GetISteamRemotePlay(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMPARENTALSETTINGS_INTERFACE_VERSION") == pchVersion) { - return GetISteamParentalSettings(hSteamUser, hSteamPipe, pchVersion); - } else if (strstr(pchVersion, "STEAMAPPTICKET_INTERFACE_VERSION") == pchVersion) { - return GetAppTicket(hSteamUser, hSteamPipe, pchVersion); - } else { - PRINT_DEBUG("No interface: %s", pchVersion); - //TODO: all the interfaces - return NULL; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Invalid handling for interface: %s", pchVersion); - return NULL; -} - -// returns the ISteamUserStats interface -ISteamUserStats *Steam_Client::GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION001") == 0) { - //TODO - return (ISteamUserStats *)(void *)(ISteamUserStats003 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION002") == 0) { - //TODO - return (ISteamUserStats *)(void *)(ISteamUserStats003 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION003") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats003 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION004") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats004 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION005") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats005 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION006") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats006 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION007") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats007 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION008") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats008 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION009") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats009 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION010") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats010 *)steam_user_stats; - } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION011") == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats011 *)steam_user_stats; - } else if (strcmp(pchVersion, STEAMUSERSTATS_INTERFACE_VERSION) == 0) { - return (ISteamUserStats *)(void *)(ISteamUserStats *)steam_user_stats; - } else { - return (ISteamUserStats *)(void *)(ISteamUserStats *)steam_user_stats; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamUserStats *)(void *)(ISteamUserStats *)steam_user_stats; -} - -// returns the ISteamGameServerStats interface -ISteamGameServerStats *Steam_Client::GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMGAMESERVERSTATS_INTERFACE_VERSION) == 0) { - return (ISteamGameServerStats *)(void *)(ISteamGameServerStats *)steam_gameserverstats; - } else { - return (ISteamGameServerStats *)(void *)(ISteamGameServerStats *)steam_gameserverstats; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamGameServerStats *)(void *)(ISteamGameServerStats *)steam_gameserverstats; -} - -// returns apps interface -ISteamApps *Steam_Client::GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - Steam_Apps *steam_apps_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_apps_temp = steam_gameserver_apps; - } else { - steam_apps_temp = steam_apps; - } - if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION001") == 0) { - return (ISteamApps *)(void *)(ISteamApps001 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION002") == 0) { - return (ISteamApps *)(void *)(ISteamApps002 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION003") == 0) { - return (ISteamApps *)(void *)(ISteamApps003 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION004") == 0) { - return (ISteamApps *)(void *)(ISteamApps004 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION005") == 0) { - return (ISteamApps *)(void *)(ISteamApps005 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION006") == 0) { - return (ISteamApps *)(void *)(ISteamApps006 *)steam_apps_temp; - } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION007") == 0) { - return (ISteamApps *)(void *)(ISteamApps007 *)steam_apps_temp; - } else if (strcmp(pchVersion, STEAMAPPS_INTERFACE_VERSION) == 0) { - return (ISteamApps *)(void *)(ISteamApps *)steam_apps_temp; - } else { - return (ISteamApps *)(void *)(ISteamApps *)steam_apps_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamApps *)(void *)(ISteamApps *)steam_apps_temp; -} - -// networking -ISteamNetworking *Steam_Client::GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - Steam_Networking *steam_networking_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_networking_temp = steam_gameserver_networking; - } else { - steam_networking_temp = steam_networking; - } - - if (strcmp(pchVersion, "SteamNetworking001") == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking001 *)steam_networking_temp; - } else if (strcmp(pchVersion, "SteamNetworking002") == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking002 *)steam_networking_temp; - } else if (strcmp(pchVersion, "SteamNetworking003") == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking003 *)steam_networking_temp; - } else if (strcmp(pchVersion, "SteamNetworking004") == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking004 *)steam_networking_temp; - } else if (strcmp(pchVersion, "SteamNetworking005") == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking005 *)steam_networking_temp; - } else if (strcmp(pchVersion, STEAMNETWORKING_INTERFACE_VERSION) == 0) { - return (ISteamNetworking *)(void *)(ISteamNetworking *)steam_networking_temp; - } else { - return (ISteamNetworking *)(void *)(ISteamNetworking *)steam_networking_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamNetworking *)(void *)(ISteamNetworking *)steam_networking_temp; -} - -// remote storage -ISteamRemoteStorage *Steam_Client::GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION001") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage001 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION002") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage002 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION003") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage003 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION004") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage004 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION005") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage005 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION006") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage006 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION007") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage007 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION008") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage008 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION009") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage009 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION010") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage010 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION011") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage011 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION012") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage012 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION013") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage013 *)steam_remote_storage; - } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION014") == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage014 *)steam_remote_storage; - } else if (strcmp(pchVersion, STEAMREMOTESTORAGE_INTERFACE_VERSION) == 0) { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage *)steam_remote_storage; - } else { - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage *)steam_remote_storage; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamRemoteStorage *)(void *)(ISteamRemoteStorage *)steam_remote_storage; -} - -// user screenshots -ISteamScreenshots *Steam_Client::GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - - if (strcmp(pchVersion, STEAMSCREENSHOTS_INTERFACE_VERSION) == 0) { - return (ISteamScreenshots *)(void *)(ISteamScreenshots *)steam_screenshots; - } else { - return (ISteamScreenshots *)(void *)(ISteamScreenshots *)steam_screenshots; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamScreenshots *)(void *)(ISteamScreenshots *)steam_screenshots; + PRINT_DEBUG("%i %u %hu // TODO", unIP.m_eType, unIP.m_unIPv4, usPort); } @@ -1005,7 +415,7 @@ uint32 Steam_Client::GetIPCCallCount() // callbacks will occur directly after the API function is called that generated the warning or message. void Steam_Client::SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) { - PRINT_DEBUG("%p", pFunction); + PRINT_DEBUG("%p // TODO", pFunction); } // Trigger global shutdown for the DLL @@ -1035,441 +445,31 @@ bool Steam_Client::BShutdownIfAllPipesClosed() return true; } -// Expose HTTP interface -ISteamHTTP *Steam_Client::GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - Steam_HTTP *steam_http_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_http_temp = steam_gameserver_http; - } else { - steam_http_temp = steam_http; - } - - if (strcmp(pchVersion, "STEAMHTTP_INTERFACE_VERSION001") == 0) { - return (ISteamHTTP *)(void *)(ISteamHTTP001 *)steam_http_temp; - } else if (strcmp(pchVersion, "STEAMHTTP_INTERFACE_VERSION002") == 0) { - return (ISteamHTTP *)(void *)(ISteamHTTP002 *)steam_http_temp; - } else if (strcmp(pchVersion, STEAMHTTP_INTERFACE_VERSION) == 0) { - return (ISteamHTTP *)(void *)(ISteamHTTP *)steam_http_temp; - } else { - return (ISteamHTTP *)(void *)(ISteamHTTP *)steam_http_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamHTTP *)(void *)(ISteamHTTP *)steam_http_temp; -} - -// Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption. -void *Steam_Client::DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION) == 0) { - return (void *)(ISteamUnifiedMessages *)steam_unified_messages; - } else { - return (void *)(ISteamUnifiedMessages *)steam_unified_messages; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (void *)(ISteamUnifiedMessages *)steam_unified_messages; -} - -ISteamUnifiedMessages *Steam_Client::GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION) == 0) { - return (ISteamUnifiedMessages *)(void *)(ISteamUnifiedMessages *)steam_unified_messages; - } else { - return (ISteamUnifiedMessages *)(void *)(ISteamUnifiedMessages *)steam_unified_messages; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return steam_unified_messages; -} - -// Exposes the ISteamController interface -ISteamController *Steam_Client::GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION") == 0) { - return (ISteamController *)(void *)(ISteamController001 *)steam_controller; - } else if (strcmp(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION_002") == 0) { - //I'm pretty sure this interface is never actually used - return (ISteamController *)(void *)(ISteamController003 *)steam_controller; - } else if (strcmp(pchVersion, "SteamController003") == 0) { - return (ISteamController *)(void *)(ISteamController003 *)steam_controller; - } else if (strcmp(pchVersion, "SteamController004") == 0) { - return (ISteamController *)(void *)(ISteamController004 *)steam_controller; - } else if (strcmp(pchVersion, "SteamController005") == 0) { - return (ISteamController *)(void *)(ISteamController005 *)steam_controller; - } else if (strcmp(pchVersion, "SteamController006") == 0) { - return (ISteamController *)(void *)(ISteamController006 *)steam_controller; - } else if (strcmp(pchVersion, "SteamController007") == 0) { - return (ISteamController *)(void *)(ISteamController007 *)steam_controller; - } else if (strcmp(pchVersion, STEAMCONTROLLER_INTERFACE_VERSION) == 0) { - return (ISteamController *)(void *)(ISteamController *)steam_controller; - } else { - return (ISteamController *)(void *)(ISteamController *)steam_controller; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamController *)(void *)(ISteamController *)steam_controller; -} - -// Exposes the ISteamUGC interface -ISteamUGC *Steam_Client::GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - Steam_UGC *steam_ugc_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_ugc_temp = steam_gameserver_ugc; - } else { - steam_ugc_temp = steam_ugc; - } - - if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION") == 0) { - //Is this actually a valid interface version? - return (ISteamUGC *)(void *)(ISteamUGC001 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION001") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC001 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION002") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC002 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION003") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC003 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION004") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC004 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION005") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC005 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION006") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC006 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION007") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC007 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION008") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC008 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION009") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC009 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION010") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC010 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION011") == 0) { - //TODO ? - return (ISteamUGC *)(void *)(ISteamUGC012 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION012") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC012 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION013") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC013 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION014") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC014 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION015") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC015 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION016") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC016 *)steam_ugc_temp; - } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION017") == 0) { - return (ISteamUGC *)(void *)(ISteamUGC017 *)steam_ugc_temp; - } else if (strcmp(pchVersion, STEAMUGC_INTERFACE_VERSION) == 0) { - return (ISteamUGC *)(void *)(ISteamUGC *)steam_ugc_temp; - } else { - return (ISteamUGC *)(void *)(ISteamUGC *)steam_ugc_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamUGC *)(void *)(ISteamUGC *)steam_ugc_temp; -} - -// returns app list interface, only available on specially registered apps -ISteamAppList *Steam_Client::GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, STEAMAPPLIST_INTERFACE_VERSION) == 0) { - return (ISteamAppList *)(void *)(ISteamAppList *)steam_applist; - } else { - return (ISteamAppList *)(void *)(ISteamAppList *)steam_applist; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamAppList *)(void *)(ISteamAppList *)steam_applist; -} - -// Music Player -ISteamMusic *Steam_Client::GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMMUSIC_INTERFACE_VERSION) == 0) { - return (ISteamMusic *)(void *)(ISteamMusic *)steam_music; - } else { - return (ISteamMusic *)(void *)(ISteamMusic *)steam_music; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamMusic *)(void *)(ISteamMusic *)steam_music; -} - -// Music Player Remote -ISteamMusicRemote *Steam_Client::GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMMUSICREMOTE_INTERFACE_VERSION) == 0) { - return (ISteamMusicRemote *)(void *)(ISteamMusicRemote *)steam_musicremote; - } else { - return (ISteamMusicRemote *)(void *)(ISteamMusicRemote *)steam_musicremote; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamMusicRemote *)(void *)(ISteamMusicRemote *)steam_musicremote; -} - -// html page display -ISteamHTMLSurface *Steam_Client::GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_001") == 0) { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface001 *)steam_HTMLsurface; - } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_002") == 0) { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface002 *)steam_HTMLsurface; - } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_003") == 0) { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface003 *)steam_HTMLsurface; - } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_004") == 0) { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface004 *)steam_HTMLsurface; - } else if (strcmp(pchVersion, STEAMHTMLSURFACE_INTERFACE_VERSION) == 0) { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface *)steam_HTMLsurface; - } else { - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface *)steam_HTMLsurface; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamHTMLSurface *)(void *)(ISteamHTMLSurface *)steam_HTMLsurface; -} - // Helper functions for internal Steam usage void Steam_Client::DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) { - PRINT_DEBUG_ENTRY(); + PRINT_DEBUG_TODO(); } void Steam_Client::DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) { - PRINT_DEBUG_ENTRY(); + PRINT_DEBUG_TODO(); } void Steam_Client::Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) { - PRINT_DEBUG("%p", func); + PRINT_DEBUG("%p // TODO", func); std::lock_guard lock(global_mutex); } void Steam_Client::Set_SteamAPI_CPostAPIResultInProcess( SteamAPI_PostAPIResultInProcess_t func ) { - PRINT_DEBUG_ENTRY(); + PRINT_DEBUG_TODO(); } void Steam_Client::Remove_SteamAPI_CPostAPIResultInProcess( SteamAPI_PostAPIResultInProcess_t func ) { - PRINT_DEBUG_ENTRY(); -} - -// inventory -ISteamInventory *Steam_Client::GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - Steam_Inventory *steam_inventory_temp; - Settings *settings_temp; - SteamCallBacks *callbacks_temp; - SteamCallResults *callback_results_temp; - - if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { - steam_inventory_temp = steam_gameserver_inventory; - } else { - steam_inventory_temp = steam_inventory; - } - - if (strcmp(pchVersion, "STEAMINVENTORY_INTERFACE_V001") == 0) { - return (ISteamInventory *)(void *)(ISteamInventory001 *)steam_inventory_temp; - } else if (strcmp(pchVersion, "STEAMINVENTORY_INTERFACE_V002") == 0) { - return (ISteamInventory *)(void *)(ISteamInventory002 *)steam_inventory_temp; - } else if (strcmp(pchVersion, STEAMINVENTORY_INTERFACE_VERSION) == 0) { - return (ISteamInventory *)(void *)(ISteamInventory *)steam_inventory_temp; - } else { - return (ISteamInventory *)(void *)(ISteamInventory *)steam_inventory_temp; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamInventory *)(void *)(ISteamInventory *)steam_inventory_temp; -} - -// Video -ISteamVideo *Steam_Client::GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMVIDEO_INTERFACE_VERSION) == 0) { - return (ISteamVideo *)(void *)(ISteamVideo *)steam_video; - } else { - return (ISteamVideo *)(void *)(ISteamVideo *)steam_video; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamVideo *)(void *)(ISteamVideo *)steam_video; -} - -// Parental controls -ISteamParentalSettings *Steam_Client::GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMPARENTALSETTINGS_INTERFACE_VERSION) == 0) { - return (ISteamParentalSettings *)(void *)(ISteamParentalSettings *)steam_parental; - } else { - return (ISteamParentalSettings *)(void *)(ISteamParentalSettings *)steam_parental; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamParentalSettings *)(void *)(ISteamParentalSettings *)steam_parental; -} - -ISteamMasterServerUpdater *Steam_Client::GetISteamMasterServerUpdater( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, STEAMMASTERSERVERUPDATER_INTERFACE_VERSION) == 0) { - return (ISteamMasterServerUpdater *)(void *)(ISteamMasterServerUpdater *)steam_masterserver_updater; - } else { - return (ISteamMasterServerUpdater *)(void *)(ISteamMasterServerUpdater *)steam_masterserver_updater; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamMasterServerUpdater *)(void *)(ISteamMasterServerUpdater *)steam_masterserver_updater; -} - -ISteamContentServer *Steam_Client::GetISteamContentServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - return NULL; -} - -// game search -ISteamGameSearch *Steam_Client::GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; - - if (strcmp(pchVersion, STEAMGAMESEARCH_INTERFACE_VERSION) == 0) { - return (ISteamGameSearch *)(void *)(ISteamGameSearch *)steam_game_search; - } else { - return (ISteamGameSearch *)(void *)(ISteamGameSearch *)steam_game_search; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamGameSearch *)(void *)(ISteamGameSearch *)steam_game_search; -} - -// Exposes the Steam Input interface for controller support -ISteamInput *Steam_Client::GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "SteamInput001") == 0) { - return (ISteamInput *)(void *)(ISteamInput001 *)steam_controller; - } else if (strcmp(pchVersion, "SteamInput002") == 0) { - return (ISteamInput *)(void *)(ISteamInput002 *)steam_controller; - } else if (strcmp(pchVersion, "SteamInput005") == 0) { - return (ISteamInput *)(void *)(ISteamInput005 *)steam_controller; - } else if (strcmp(pchVersion, STEAMINPUT_INTERFACE_VERSION) == 0) { - return (ISteamInput *)(void *)(ISteamInput *)steam_controller; - } else { - return (ISteamInput *)(void *)(ISteamInput *)steam_controller; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamInput *)(void *)(ISteamInput *)steam_controller; -} - -// Steam Parties interface -ISteamParties *Steam_Client::GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, STEAMPARTIES_INTERFACE_VERSION) == 0) { - return (ISteamParties *)(void *)(ISteamParties *)steam_parties; - } else { - return (ISteamParties *)(void *)(ISteamParties *)steam_parties; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamParties *)(void *)(ISteamParties *)steam_parties; -} - -ISteamRemotePlay *Steam_Client::GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION001") == 0) { - return (ISteamRemotePlay *)(void *)(ISteamRemotePlay001 *)steam_remoteplay; - } else if (strcmp(pchVersion, STEAMREMOTEPLAY_INTERFACE_VERSION) == 0) { - return (ISteamRemotePlay *)(void *)(ISteamRemotePlay *)steam_remoteplay; - } else { - return (ISteamRemotePlay *)(void *)(ISteamRemotePlay *)steam_remoteplay; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamRemotePlay *)(void *)(ISteamRemotePlay *)steam_remoteplay; -} - -ISteamAppTicket *Steam_Client::GetAppTicket( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) -{ - PRINT_DEBUG("%s", pchVersion); - if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; - - if (strcmp(pchVersion, STEAMAPPTICKET_INTERFACE_VERSION) == 0) { - return (ISteamAppTicket *)(void *)(ISteamAppTicket *)steam_app_ticket; - } else { - return (ISteamAppTicket *)(void *)(ISteamAppTicket *)steam_app_ticket; - } - - // we can get here if one of the if-statements didn't return in all paths - PRINT_DEBUG("Missing handling for interface: %s", pchVersion); - return (ISteamAppTicket *)(void *)(ISteamAppTicket *)steam_app_ticket; + PRINT_DEBUG_TODO(); } void Steam_Client::RegisterCallback( class CCallbackBase *pCallback, int iCallback) diff --git a/dll/steam_client_interface_getter.cpp b/dll/steam_client_interface_getter.cpp new file mode 100644 index 00000000..9ff83e51 --- /dev/null +++ b/dll/steam_client_interface_getter.cpp @@ -0,0 +1,1022 @@ +/* Copyright (C) 2019 Mr Goldberg + This file is part of the Goldberg Emulator + + The Goldberg Emulator is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + The Goldberg Emulator is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the Goldberg Emulator; if not, see + . */ + +#include "dll/steam_client.h" + +// retrieves the ISteamUser interface associated with the handle +ISteamUser *Steam_Client::GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamUser009") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser010") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser011") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser012") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser013") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser014") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser015") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser016") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser017") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser018") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser019") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser020") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser021") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, "SteamUser022") == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else if (strcmp(pchVersion, STEAMUSER_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_user)); + } else { + return reinterpret_cast(static_cast(steam_user)); + } + + return reinterpret_cast(static_cast(steam_user)); +} + +// retrieves the ISteamGameServer interface associated with the handle +ISteamGameServer *Steam_Client::GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamGameServer004") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer005") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer006") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer007") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer008") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer009") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer010") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer011") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer012") == 0) { + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer013") == 0) { + gameserver_has_ipv6_functions = true; + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, "SteamGameServer014") == 0) { + gameserver_has_ipv6_functions = true; + return reinterpret_cast(static_cast(steam_gameserver)); + } else if (strcmp(pchVersion, STEAMGAMESERVER_INTERFACE_VERSION) == 0) { + gameserver_has_ipv6_functions = true; + return reinterpret_cast(static_cast(steam_gameserver)); + } else { + gameserver_has_ipv6_functions = true; + return reinterpret_cast(static_cast(steam_gameserver)); + } + + return reinterpret_cast(static_cast(steam_gameserver)); +} + +// returns the ISteamFriends interface +ISteamFriends *Steam_Client::GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamFriends003") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends004") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends005") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends006") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends007") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends008") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends009") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends010") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends011") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends012") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends013") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends014") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends015") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, "SteamFriends016") == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else if (strcmp(pchVersion, STEAMFRIENDS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_friends)); + } else { + return reinterpret_cast(static_cast(steam_friends)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_friends)); +} + +// returns the ISteamUtils interface +ISteamUtils *Steam_Client::GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe)) return NULL; + + Steam_Utils *steam_utils_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_utils_temp = steam_gameserver_utils; + } else { + steam_utils_temp = steam_utils; + } + + if (strcmp(pchVersion, "SteamUtils002") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils003") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils004") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils005") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils006") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils007") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils008") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, "SteamUtils009") == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else if (strcmp(pchVersion, STEAMUTILS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_utils_temp)); + } else { + return reinterpret_cast(static_cast(steam_utils_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_utils_temp)); +} + +// returns the ISteamMatchmaking interface +ISteamMatchmaking *Steam_Client::GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamMatchMaking001") == 0) { + //TODO + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking002") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking003") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking004") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking005") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking006") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking007") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, "SteamMatchMaking008") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else if (strcmp(pchVersion, STEAMMATCHMAKING_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_matchmaking)); + } else { + return reinterpret_cast(static_cast(steam_matchmaking)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_matchmaking)); +} + +// returns the ISteamMatchmakingServers interface +ISteamMatchmakingServers *Steam_Client::GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamMatchMakingServers001") == 0) { + return reinterpret_cast(static_cast(steam_matchmaking_servers)); + } else if (strcmp(pchVersion, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_matchmaking_servers)); + } else { + return reinterpret_cast(static_cast(steam_matchmaking_servers)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_matchmaking_servers)); +} + +// returns the a generic interface +void *Steam_Client::GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe)) return NULL; + + bool server = false; + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + server = true; + } else { + if ((strstr(pchVersion, "SteamNetworkingUtils") != pchVersion) && (strstr(pchVersion, "SteamUtils") != pchVersion)) { + if (!hSteamUser) return NULL; + } + } + + // NOTE: you must try to read the one with the most characters first + + if (strstr(pchVersion, "SteamNetworkingSocketsSerialized") == pchVersion) { + Steam_Networking_Sockets_Serialized *steam_networking_sockets_serialized_temp; + if (server) { + steam_networking_sockets_serialized_temp = steam_gameserver_networking_sockets_serialized; + } else { + steam_networking_sockets_serialized_temp = steam_networking_sockets_serialized; + } + + if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized002") == 0) { + return (void *)(ISteamNetworkingSocketsSerialized002 *)steam_networking_sockets_serialized_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized003") == 0) { + return (void *)(ISteamNetworkingSocketsSerialized003 *)steam_networking_sockets_serialized_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized004") == 0) { + return (void *)(ISteamNetworkingSocketsSerialized004 *)steam_networking_sockets_serialized_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSocketsSerialized005") == 0) { + return (void *)(ISteamNetworkingSocketsSerialized005 *)steam_networking_sockets_serialized_temp; + } else { + return (void *)(ISteamNetworkingSocketsSerialized005 *)steam_networking_sockets_serialized_temp; + } + } else if (strstr(pchVersion, "SteamNetworkingSockets") == pchVersion) { + Steam_Networking_Sockets *steam_networking_sockets_temp; + if (server) { + steam_networking_sockets_temp = steam_gameserver_networking_sockets; + } else { + steam_networking_sockets_temp = steam_networking_sockets; + } + + if (strcmp(pchVersion, "SteamNetworkingSockets001") == 0) { + return (void *)(ISteamNetworkingSockets001 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets002") == 0) { + return (void *)(ISteamNetworkingSockets002 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets003") == 0) { + return (void *)(ISteamNetworkingSockets003 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets004") == 0) { + return (void *)(ISteamNetworkingSockets004 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets006") == 0) { + return (void *)(ISteamNetworkingSockets006 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets008") == 0) { + return (void *)(ISteamNetworkingSockets008 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, "SteamNetworkingSockets009") == 0) { + return (void *)(ISteamNetworkingSockets009 *) steam_networking_sockets_temp; + } else if (strcmp(pchVersion, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION) == 0) { + return (void *)(ISteamNetworkingSockets *) steam_networking_sockets_temp; + } else { + return (void *)(ISteamNetworkingSockets *) steam_networking_sockets_temp; + } + } else if (strstr(pchVersion, "SteamNetworkingMessages") == pchVersion) { + Steam_Networking_Messages *steam_networking_messages_temp; + if (server) { + steam_networking_messages_temp = steam_gameserver_networking_messages; + } else { + steam_networking_messages_temp = steam_networking_messages; + } + + if (strcmp(pchVersion, STEAMNETWORKINGMESSAGES_INTERFACE_VERSION) == 0) { + return (void *)(ISteamNetworkingMessages *)steam_networking_messages_temp; + } else { + return (void *)(ISteamNetworkingMessages *)steam_networking_messages_temp; + } + } else if (strstr(pchVersion, "SteamNetworkingUtils") == pchVersion) { + if (strcmp(pchVersion, "SteamNetworkingUtils001") == 0) { + return (void *)(ISteamNetworkingUtils001 *)steam_networking_utils; + } else if (strcmp(pchVersion, "SteamNetworkingUtils002") == 0) { + return (void *)(ISteamNetworkingUtils002 *)steam_networking_utils; + } else if (strcmp(pchVersion, "SteamNetworkingUtils003") == 0) { + return (void *)(ISteamNetworkingUtils003 *)steam_networking_utils; + } else if (strcmp(pchVersion, STEAMNETWORKINGUTILS_INTERFACE_VERSION) == 0) { + return (void *)(ISteamNetworkingUtils *)steam_networking_utils; + } else { + return (void *)(ISteamNetworkingUtils *)steam_networking_utils; + } + } else if (strstr(pchVersion, "SteamNetworking") == pchVersion) { + return GetISteamNetworking(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamGameCoordinator") == pchVersion) { + Steam_Game_Coordinator *steam_game_coordinator_temp; + if (server) { + steam_game_coordinator_temp = steam_gameserver_game_coordinator; + } else { + steam_game_coordinator_temp = steam_game_coordinator; + } + + if (strcmp(pchVersion, STEAMGAMECOORDINATOR_INTERFACE_VERSION) == 0) { + return (void *)(ISteamGameCoordinator *)steam_game_coordinator_temp; + } else { + return (void *)(ISteamGameCoordinator *)steam_game_coordinator_temp; + } + } else if (strstr(pchVersion, "STEAMTV_INTERFACE_V") == pchVersion) { + if (strcmp(pchVersion, STEAMTV_INTERFACE_VERSION) == 0) { + return (void *)(ISteamTV *)steam_tv; + } else { + return (void *)(ISteamTV *)steam_tv; + } + } else if (strstr(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION") == pchVersion) { + return GetISteamRemoteStorage(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamGameServerStats") == pchVersion) { + return GetISteamGameServerStats(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamGameServer") == pchVersion) { + return GetISteamGameServer(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamMatchMakingServers") == pchVersion) { + return GetISteamMatchmakingServers(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamMatchMaking") == pchVersion) { + return GetISteamMatchmaking(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamFriends") == pchVersion) { + return GetISteamFriends(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamController") == pchVersion || strstr(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION") == pchVersion) { + return GetISteamController(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMUGC_INTERFACE_VERSION") == pchVersion) { + return GetISteamUGC(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMINVENTORY_INTERFACE") == pchVersion) { + return GetISteamInventory(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION") == pchVersion) { + return GetISteamUserStats(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamUser") == pchVersion) { + return GetISteamUser(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamUtils") == pchVersion) { + return GetISteamUtils(hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMAPPS_INTERFACE_VERSION") == pchVersion) { + return GetISteamApps(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMSCREENSHOTS_INTERFACE_VERSION") == pchVersion) { + return GetISteamScreenshots(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMHTTP_INTERFACE_VERSION") == pchVersion) { + return GetISteamHTTP(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION") == pchVersion) { + return DEPRECATED_GetISteamUnifiedMessages(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMAPPLIST_INTERFACE_VERSION") == pchVersion) { + return GetISteamAppList(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMMUSIC_INTERFACE_VERSION") == pchVersion) { + return GetISteamMusic(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMMUSICREMOTE_INTERFACE_VERSION") == pchVersion) { + return GetISteamMusicRemote(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION") == pchVersion) { + return GetISteamHTMLSurface(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMVIDEO_INTERFACE") == pchVersion) { + return GetISteamVideo(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamMasterServerUpdater") == pchVersion) { + return GetISteamMasterServerUpdater(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamMatchGameSearch") == pchVersion) { + return GetISteamGameSearch(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamParties") == pchVersion) { + return GetISteamParties(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "SteamInput") == pchVersion) { + return GetISteamInput(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION") == pchVersion) { + return GetISteamRemotePlay(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMPARENTALSETTINGS_INTERFACE_VERSION") == pchVersion) { + return GetISteamParentalSettings(hSteamUser, hSteamPipe, pchVersion); + } else if (strstr(pchVersion, "STEAMAPPTICKET_INTERFACE_VERSION") == pchVersion) { + return GetAppTicket(hSteamUser, hSteamPipe, pchVersion); + } else { + PRINT_DEBUG("No interface: %s", pchVersion); + //TODO: all the interfaces + return NULL; + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Invalid handling for interface: %s", pchVersion); + return NULL; +} + +// returns the ISteamUserStats interface +ISteamUserStats *Steam_Client::GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION001") == 0) { + //TODO + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION002") == 0) { + //TODO + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION003") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION004") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION005") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION006") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION007") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION008") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION009") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION010") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, "STEAMUSERSTATS_INTERFACE_VERSION011") == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else if (strcmp(pchVersion, STEAMUSERSTATS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_user_stats)); + } else { + return reinterpret_cast(static_cast(steam_user_stats)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_user_stats)); +} + +// returns the ISteamGameServerStats interface +ISteamGameServerStats *Steam_Client::GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMGAMESERVERSTATS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_gameserverstats)); + } else { + return reinterpret_cast(static_cast(steam_gameserverstats)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_gameserverstats)); +} + +// returns apps interface +ISteamApps *Steam_Client::GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + Steam_Apps *steam_apps_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_apps_temp = steam_gameserver_apps; + } else { + steam_apps_temp = steam_apps; + } + if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION001") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION002") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION003") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION004") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION005") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION006") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, "STEAMAPPS_INTERFACE_VERSION007") == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else if (strcmp(pchVersion, STEAMAPPS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_apps_temp)); + } else { + return reinterpret_cast(static_cast(steam_apps_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_apps_temp)); +} + +// networking +ISteamNetworking *Steam_Client::GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + Steam_Networking *steam_networking_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_networking_temp = steam_gameserver_networking; + } else { + steam_networking_temp = steam_networking; + } + + if (strcmp(pchVersion, "SteamNetworking001") == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else if (strcmp(pchVersion, "SteamNetworking002") == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else if (strcmp(pchVersion, "SteamNetworking003") == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else if (strcmp(pchVersion, "SteamNetworking004") == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else if (strcmp(pchVersion, "SteamNetworking005") == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else if (strcmp(pchVersion, STEAMNETWORKING_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_networking_temp)); + } else { + return reinterpret_cast(static_cast(steam_networking_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_networking_temp)); +} + +// remote storage +ISteamRemoteStorage *Steam_Client::GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION001") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION002") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION003") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION004") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION005") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION006") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION007") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION008") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION009") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION010") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION011") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION012") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION013") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, "STEAMREMOTESTORAGE_INTERFACE_VERSION014") == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else if (strcmp(pchVersion, STEAMREMOTESTORAGE_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_remote_storage)); + } else { + return reinterpret_cast(static_cast(steam_remote_storage)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_remote_storage)); +} + +// user screenshots +ISteamScreenshots *Steam_Client::GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + + if (strcmp(pchVersion, STEAMSCREENSHOTS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_screenshots)); + } else { + return reinterpret_cast(static_cast(steam_screenshots)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_screenshots)); +} + + +// Expose HTTP interface +ISteamHTTP *Steam_Client::GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + Steam_HTTP *steam_http_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_http_temp = steam_gameserver_http; + } else { + steam_http_temp = steam_http; + } + + if (strcmp(pchVersion, "STEAMHTTP_INTERFACE_VERSION001") == 0) { + return reinterpret_cast(static_cast(steam_http_temp)); + } else if (strcmp(pchVersion, "STEAMHTTP_INTERFACE_VERSION002") == 0) { + return reinterpret_cast(static_cast(steam_http_temp)); + } else if (strcmp(pchVersion, STEAMHTTP_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_http_temp)); + } else { + return reinterpret_cast(static_cast(steam_http_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_http_temp)); +} + +// Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption. +void *Steam_Client::DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION) == 0) { + return (void *)(ISteamUnifiedMessages *)steam_unified_messages; + } else { + return (void *)(ISteamUnifiedMessages *)steam_unified_messages; + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return (void *)(ISteamUnifiedMessages *)steam_unified_messages; +} + +ISteamUnifiedMessages *Steam_Client::GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_unified_messages)); + } else { + return reinterpret_cast(static_cast(steam_unified_messages)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return steam_unified_messages; +} + +// Exposes the ISteamController interface +ISteamController *Steam_Client::GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "STEAMCONTROLLER_INTERFACE_VERSION_002") == 0) { + //I'm pretty sure this interface is never actually used + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamController003") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamController004") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamController005") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamController006") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamController007") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, STEAMCONTROLLER_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else { + return reinterpret_cast(static_cast(steam_controller)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_controller)); +} + +// Exposes the ISteamUGC interface +ISteamUGC *Steam_Client::GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + Steam_UGC *steam_ugc_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_ugc_temp = steam_gameserver_ugc; + } else { + steam_ugc_temp = steam_ugc; + } + + if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION") == 0) { + //Is this actually a valid interface version? + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION001") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION002") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION003") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION004") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION005") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION006") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION007") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION008") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION009") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION010") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION011") == 0) { + //TODO ? + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION012") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION013") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION014") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION015") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION016") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION017") == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else if (strcmp(pchVersion, STEAMUGC_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } else { + return reinterpret_cast(static_cast(steam_ugc_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_ugc_temp)); +} + +// returns app list interface, only available on specially registered apps +ISteamAppList *Steam_Client::GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, STEAMAPPLIST_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_applist)); + } else { + return reinterpret_cast(static_cast(steam_applist)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_applist)); +} + +// Music Player +ISteamMusic *Steam_Client::GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMMUSIC_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_music)); + } else { + return reinterpret_cast(static_cast(steam_music)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_music)); +} + +// Music Player Remote +ISteamMusicRemote *Steam_Client::GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMMUSICREMOTE_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_musicremote)); + } else { + return reinterpret_cast(static_cast(steam_musicremote)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_musicremote)); +} + +// html page display +ISteamHTMLSurface *Steam_Client::GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_001") == 0) { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_002") == 0) { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_003") == 0) { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } else if (strcmp(pchVersion, "STEAMHTMLSURFACE_INTERFACE_VERSION_004") == 0) { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } else if (strcmp(pchVersion, STEAMHTMLSURFACE_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } else { + return reinterpret_cast(static_cast(steam_HTMLsurface)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_HTMLsurface)); +} + +// inventory +ISteamInventory *Steam_Client::GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + Steam_Inventory *steam_inventory_temp; + Settings *settings_temp; + SteamCallBacks *callbacks_temp; + SteamCallResults *callback_results_temp; + + if (steam_pipes[hSteamPipe] == Steam_Pipe::SERVER) { + steam_inventory_temp = steam_gameserver_inventory; + } else { + steam_inventory_temp = steam_inventory; + } + + if (strcmp(pchVersion, "STEAMINVENTORY_INTERFACE_V001") == 0) { + return reinterpret_cast(static_cast(steam_inventory_temp)); + } else if (strcmp(pchVersion, "STEAMINVENTORY_INTERFACE_V002") == 0) { + return reinterpret_cast(static_cast(steam_inventory_temp)); + } else if (strcmp(pchVersion, STEAMINVENTORY_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_inventory_temp)); + } else { + return reinterpret_cast(static_cast(steam_inventory_temp)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_inventory_temp)); +} + +// Video +ISteamVideo *Steam_Client::GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMVIDEO_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_video)); + } else { + return reinterpret_cast(static_cast(steam_video)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_video)); +} + +// Parental controls +ISteamParentalSettings *Steam_Client::GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMPARENTALSETTINGS_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_parental)); + } else { + return reinterpret_cast(static_cast(steam_parental)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_parental)); +} + +ISteamMasterServerUpdater *Steam_Client::GetISteamMasterServerUpdater( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, STEAMMASTERSERVERUPDATER_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_masterserver_updater)); + } else { + return reinterpret_cast(static_cast(steam_masterserver_updater)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_masterserver_updater)); +} + +ISteamContentServer *Steam_Client::GetISteamContentServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + return NULL; +} + +// game search +ISteamGameSearch *Steam_Client::GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamuser) return NULL; + + if (strcmp(pchVersion, STEAMGAMESEARCH_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_game_search)); + } else { + return reinterpret_cast(static_cast(steam_game_search)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_game_search)); +} + +// Exposes the Steam Input interface for controller support +ISteamInput *Steam_Client::GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "SteamInput001") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamInput002") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, "SteamInput005") == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else if (strcmp(pchVersion, STEAMINPUT_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_controller)); + } else { + return reinterpret_cast(static_cast(steam_controller)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_controller)); +} + +// Steam Parties interface +ISteamParties *Steam_Client::GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, STEAMPARTIES_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_parties)); + } else { + return reinterpret_cast(static_cast(steam_parties)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_parties)); +} + +ISteamRemotePlay *Steam_Client::GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION001") == 0) { + return reinterpret_cast(static_cast(steam_remoteplay)); + } else if (strcmp(pchVersion, STEAMREMOTEPLAY_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_remoteplay)); + } else { + return reinterpret_cast(static_cast(steam_remoteplay)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_remoteplay)); +} + +ISteamAppTicket *Steam_Client::GetAppTicket( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) +{ + PRINT_DEBUG("%s", pchVersion); + if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL; + + if (strcmp(pchVersion, STEAMAPPTICKET_INTERFACE_VERSION) == 0) { + return reinterpret_cast(static_cast(steam_app_ticket)); + } else { + return reinterpret_cast(static_cast(steam_app_ticket)); + } + + // we can get here if one of the if-statements didn't return in all paths + PRINT_DEBUG("Missing handling for interface: %s", pchVersion); + return reinterpret_cast(static_cast(steam_app_ticket)); +}