diff --git a/lsteamclient/cppISteamUser_SteamUser008.cpp b/lsteamclient/cppISteamUser_SteamUser008.cpp index b9af6af5..f6b8961d 100644 --- a/lsteamclient/cppISteamUser_SteamUser008.cpp +++ b/lsteamclient/cppISteamUser_SteamUser008.cpp @@ -25,11 +25,6 @@ CSteamID cppISteamUser_SteamUser008_GetSteamID(void *linux_side) return ((ISteamUser*)linux_side)->GetSteamID(); } -int cppISteamUser_SteamUser008_InitiateGameConnection(void *linux_side, void * pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void * pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey) -{ - return ((ISteamUser*)linux_side)->InitiateGameConnection((void *)pBlob, (int)cbMaxBlob, (CSteamID)steamID, (CGameID)gameID, (uint32)unIPServer, (uint16)usPortServer, (bool)bSecure, (void *)pvSteam2GetEncryptionKey, (int)cbSteam2GetEncryptionKey); -} - void cppISteamUser_SteamUser008_TerminateGameConnection(void *linux_side, uint32 unIPServer, uint16 usPortServer) { ((ISteamUser*)linux_side)->TerminateGameConnection((uint32)unIPServer, (uint16)usPortServer); diff --git a/lsteamclient/gen_wrapper.py b/lsteamclient/gen_wrapper.py index 0719de6d..384dfeaa 100755 --- a/lsteamclient/gen_wrapper.py +++ b/lsteamclient/gen_wrapper.py @@ -266,6 +266,9 @@ manually_handled_methods = { "DestroyFakeUDPPort", "ReceiveMessages" ], + "cppISteamUser_SteamUser008": [ + "InitiateGameConnection" + ], } # manual converters for simple types (function pointers) diff --git a/lsteamclient/steamclient_manual_099y.cpp b/lsteamclient/steamclient_manual_099y.cpp new file mode 100644 index 00000000..1cebde34 --- /dev/null +++ b/lsteamclient/steamclient_manual_099y.cpp @@ -0,0 +1,43 @@ +extern "C" { +#include + +#include "windef.h" +#include "winbase.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(steamclient); +} + +#include "steam_defs.h" +#pragma push_macro("__cdecl") +#undef __cdecl +#include "steamworks_sdk_099y/steam_api.h" +#pragma pop_macro("__cdecl") +#include "steamclient_private.h" + +class ISteamUser_linux +{ +public: + virtual HSteamUser GetHSteamUser() = 0; + virtual bool BLoggedOn() = 0; + virtual CSteamID GetSteamID() = 0; + + /* CGameID -> CGameID &. + * Windows side follows the prototype in the header while Linux + * steamclient treats gameID parameter as pointer. */ + virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID &gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void *pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey ) = 0; + + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + virtual void RefreshSteam2Login() = 0; +}; + +extern "C" { + int cppISteamUser_SteamUser008_InitiateGameConnection(void *linux_side, void * pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, + bool bSecure, void * pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey) + { + WARN("Manual call fixup.\n"); + return ((ISteamUser_linux *)linux_side)->InitiateGameConnection(pBlob, cbMaxBlob, steamID, gameID, unIPServer, usPortServer, + bSecure, pvSteam2GetEncryptionKey, cbSteam2GetEncryptionKey); + } +}